OneToMany注释列表中的重复项

达维奥

我正在使用JPA 2 + Hibernate 4.2.6进行Java项目,并且得到了奇怪的行为。

在我的模型中,我有两个相关实体:QuestionAnswer

@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;

    // ...
}

这非常有效:Answer与某个特定Question对象相关的所有都已正确加载。

但是现在我需要将answerscollecton的tipe更改SetList我更改了类型并再次运行了该应用程序,现在在answers...中出现了多个重复项,为什么可能呢?我知道这List允许重复,但是我的数据库中没有重复的记录,那么为什么要得到这些?

我在早期版本的Hibernate中读到一些类似的错误,但是我希望它们在最新版本中得到解决...我错了吗?

注意我需要更改Set为,List因为我需要保留有关答案顺序的信息,并且可能需要更改此顺序。

戴维·莱维斯克

您很可能会重复,因为使用fetch = FetchType.EAGER时,Hibernate使用外部联接来获取联接表中的数据。

尝试删除渴望获取的内容以进行确认。在这种情况下,您应该删除急切的访存,保留Set而不是List或编写JPQL查询以准确检索所需内容。

Hibernate doc中

建议的方法是在所有静态提取定义上使用LAZY并通过JP-QL动态覆盖此选择。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

筛选列表中的重复项

来自分类Dev

列表中的方案重复项

来自分类Dev

在列表中查找重复项

来自分类Dev

删除列表中的重复项

来自分类Dev

返回列表中的重复项

来自分类Dev

列表中重复项的getCount

来自分类Dev

列表中重复项的python列表索引

来自分类Dev

删除列表列表中的重复项

来自分类Dev

Python-减少重复项列表,但如果重复项则保留列表中的重复项

来自分类Dev

从SML中的列表中删除重复项

来自分类Dev

从Scheme中的列表中删除重复项

来自分类Dev

在列表中搜索Python中的重复项

来自分类Dev

从列表中的元组中删除重复项

来自分类Dev

使用Distinct删除列表中的重复项

来自分类Dev

从类别列表中删除重复项

来自分类Dev

在忽略字段的列表中查找重复项

来自分类Dev

Python从列表中删除几个重复项

来自分类Dev

如何在列表中查找重复项?

来自分类Dev

在列表中查找连续的重复项

来自分类Dev

从元组列表中删除重复项

来自分类Dev

在无序列表中查找重复项

来自分类Dev

从配对列表中删除“重复项”

来自分类Dev

从numPy数组列表中删除重复项

来自分类Dev

从排序列表中删除重复项

来自分类Dev

Python-列表中重复项的索引

来自分类Dev

计算OCaml列表中重复项的数量

来自分类Dev

LINQ:返回列表中的非重复项

来自分类Dev

Elixir从列表中删除重复项

来自分类Dev

在几个列表中查找重复项