我有A级,与B级和B级有一对多的关系。 C.我已将fetchType设置为EAGER,这导致JPA中的多包提取问题。现在有两种方法可以解决我所知道的问题。要么我保持获取类型Eager&将它们从List更改为Set在我的情况下是正常的,或者将fetchType更改为“lazy”并使用join查询到EAGER获取关系。推荐的方法是什么?
答案 0 :(得分:3)
“JPA中的多包提取问题”
请注意,它们不是“JPA中的多包提取问题”,这是Hibernate的一个特定问题。其他JPA提供商没有此问题,JPA完全允许您拥有多个EAGER OneToMany关系。
答案 1 :(得分:1)
在急切的集合提取中,Hibernate默认“交叉连接”你的根和集合表。这可能会导致返回重复的根元素,这可能是您不想要的。三种可能的解决方案:
答案 2 :(得分:0)
考虑将集合映射为列表而不是包。这是通过添加@org.hibernate.annotations.IndexColumn
或从JPA 2.0开始,更喜欢@javax.persistence.OrderColumn