我正在使用JPA 2 + Hibernate 4.2.6的Java项目,我收到了一个奇怪的行为。重复OneToMany注释列表
在我的模型,我有两个相关的entites:Question
和Answer
@Entity
public class Question {
// ...
@OneToMany(mappedBy = "question", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private Set<Answer> answers;
// ...
}
@Entity
public class Answer {
// ...
@ManyToOne(optional = false)
@JoinColumn(name = "question_id", nullable = false)
private Question question;
// ...
}
这完美的作品:与某个Question
所有Answer
s的正确加载。
但是现在我需要将answers
collecton的tipe从Set
更改为List
。我改变了类型,并再次运行应用程序,现在我在answers
... 中得到几个重复项目为什么可能?我知道List
允许重复,但我的数据库中没有重复的记录,所以为什么我得到这些?
我读了一些在以前版本的Hibernate中的一些类似的错误,但我期望它们在最后的版本中得到解决......我错了吗?
注意我需要改变Set
到List
因为我需要保持大约答案和可能的顺序信息,要改变这种秩序。
您还可以使用@Fetch(FetchMode.SELECT)和fetch = FetchType.EAGER。有了这个,不需要从List更改为Set。 – nimo23