我敢打赌,您认为工作正常,实际工作不正确的渴望。
当您渴望获取多个“
bag”(允许重复的无序集合)时,用于执行渴望获取(左外部联接)的sql将为联接的关联返回多个结果,如该SO答案所述。因此,
org.hibernate.loader.MultipleBagFetchException当您
List渴望获取多个时,hibernate不会抛出,但由于上述原因,它不会返回准确的结果。
但是,当您向查询提供实体图提示时,hibernate将(正确地)抱怨。 hibernate开发人员Emmanuel
Bernard解决了抛出此异常的原因:
渴望获取本身并不是问题,而是在一个SQL查询中使用多个联接。它不仅仅限于静态获取策略。它从未得到支持(属性),因为从概念上讲是不可能的。
伊曼纽尔在JIRA的另一则评论中说:
“非索引”列表或原始Collection的大多数用法是错误的,在语义上应为Set。
因此,最重要的是,为了使多个热切的获取工作如您所愿:
- 使用
Set
而不是List
List
使用JPA 2的@OrderColumn
注释保留索引,- 如果所有其他方法均失败,则回退到Hibernate特定的获取批注(
FetchMode.SELECT
或FetchMode.SUBSELECT
)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)