栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/401334.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号