OneToMany マッピングを持つ 2 つのクラスがあります。Question クラスと Answer クラスがあります。すべての質問に対して、表に 4 つの回答が書かれています。テーブルには 10 の質問行と対応する 40 の回答行があります。リストを取得しようとすると、質問ごとに 4 つの重複がある 10 ではなく、40 の質問が表示されます。
ここに私の質問クラスがあります:
@Entity
@Table(name = "QUESTIONS")
public class Question implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "QUES_ID_SEQ")
@SequenceGenerator(name = "QUES_ID_SEQ", sequenceName = "QUES_ID_SEQ")
@Column(name = "QUESTION_ID")
private Long id;
@Column(length = 255)
private String question;
@OneToMany(targetEntity = Answer.class, fetch = FetchType.EAGER)
@Cascade(CascadeType.SAVE_UPDATE)
@JoinTable(name = "QNA",
joinColumns = @JoinColumn(name = "QUESTION_ID"),
inverseJoinColumns = @JoinColumn(name = "ANSWER_ID", referencedColumnName = "ANSWER_ID"))
private List<Answer> answers;
public Question() {}
// getters and setters ...
}
これが私の Answer クラスです:
@Entity
@Table(name = "ANSWERS")
public class Answer implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "ANS_ID_SEQ")
@SequenceGenerator(name = "ANS_ID_SEQ", sequenceName = "ANS_ID_SEQ")
@Column(name = "ANSWER_ID")
private Long id;
@Column(length = 255)
private String answer;
private boolean correct;
public Answer() {}
// getters and setters ...
}
私はこのような質問を取得しています:
@Transactional
public List<Question> retrieveQuestions(){
Criteria criteria = sessionFactory.getCurrentSession().createCriteria(Question.class);
return (List<Question>) criteria.list();
}