NamedEntityGraph-JPA Hibernate抛出org.hibernate.loader.MultipleBagFetchException:无法同时获取多个包

NamedEntityGraph-JPA Hibernate抛出org.hibernate.loader.MultipleBagFetchException:无法同时获取多个包,第1张

NamedEntityGraph-JPA /Hibernate抛出org.hibernate.loader.MultipleBagFetchException:无法同时获取多个包

我敢打赌,您认为工作正常,实际工作不正确的渴望

当您渴望获取多个“
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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5010116.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-14
下一篇 2022-11-14

发表评论

登录后才能评论

评论列表(0条)

保存