Hibernate 抛出 MultipleBagFetchException - 无法同时获取多个包

2023-12-15

Hibernate 在 SessionFactory 创建期间抛出此异常:

org.hibernate.loader.MultipleBagFetchException:无法同时获取多个包

这是我的测试用例:

父类.java

@Entity
public Parent {

 @Id
 @GeneratedValue(strategy=GenerationType.IDENTITY)
 private Long id;

 @OneToMany(mappedBy="parent", fetch=FetchType.EAGER)
 // @IndexColumn(name="INDEX_COL") if I had this the problem solve but I retrieve more children than I have, one child is null.
 private List<Child> children;

}

孩子.java

@Entity
public Child {

 @Id
 @GeneratedValue(strategy=GenerationType.IDENTITY)
 private Long id;

 @ManyToOne
 private Parent parent;

}

这个问题怎么办?我能做些什么?


EDIT

好的,我遇到的问题是另一个“父”实体位于我的父实体内部,我的真实行为是这样的:

父类.java

@Entity
public Parent {

 @Id
 @GeneratedValue(strategy=GenerationType.IDENTITY)
 private Long id;

 @ManyToOne
 private AnotherParent anotherParent;

 @OneToMany(mappedBy="parent", fetch=FetchType.EAGER)
 private List<Child> children;

}

AnotherParent.java

@Entity
public AnotherParent {

 @Id
 @GeneratedValue(strategy=GenerationType.IDENTITY)
 private Long id;

 @OneToMany(mappedBy="parent", fetch=FetchType.EAGER)
 private List<AnotherChild> anotherChildren;

}

Hibernate 不喜欢两个集合FetchType.EAGER,但这似乎是一个错误,我没有做不寻常的事情......

去除FetchType.EAGER from Parent or AnotherParent解决了问题,但我需要它,所以真正的解决方案是使用@LazyCollection(LazyCollectionOption.FALSE)代替FetchType(谢谢Bozho为解决方案)。


我认为较新版本的 hibernate(支持 JPA 2.0)应该可以处理这个问题。但除此之外,您可以通过使用以下方式注释集合字段来解决此问题:

@LazyCollection(LazyCollectionOption.FALSE)

记得删除fetchType属性来自于@*ToMany注解。

但请注意,大多数情况下Set<Child>比更合适List<Child>,所以除非你真的需要一个List- 去做Set

谨慎使用

请记住,使用Set won't消除底层笛卡尔积正如所描述的弗拉德·米哈尔恰 (Vlad Mihalcea) 的回答!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hibernate 抛出 MultipleBagFetchException - 无法同时获取多个包 的相关文章

随机推荐

  • rapply 到 R 中的嵌套列表

    我无法对嵌套列表进行说唱 以下是列表中一个元素的示例结构 F01 List of 7 0 data frame 16 obs of 3 variables lengths Factor w 8 levels 1 2 4 5 1 2 3 4
  • 生成_id即可。 MongoDB 中的 ObjectId 自动生成

    我正在开发一个创建永久链接的应用程序 我不知道如何将文档保存在 MondoDB 中 两种策略 ObjectId 自动生成 MongoDB 自动生成 id 我需要创建一个索引permalink字段 因为我通过永久链接获取信息 我还可以使用以下
  • 如何知道一个标签是否包含一个值或另一个标签?

    我在 java 中使用 DOM 表示 如何区分 xml 标签内部是否有值或是否有另一个嵌入标签 例如 我可以有
  • (char *) x 或 (void *) z 是什么意思?

    I know char x意味着指向 char 的指针 但我对什么感到困惑 char x means 这是一个演员阵容 您正在指示编译器处理x就好像它是一个char 无论其真实类型如何 仅当您真正知道自己在做什么时才应使用强制转换 对于某些
  • CSS3 多重变换

    我有一个 css3 动画 我使用下面的代码在 X 轴上旋转立方体 webkit keyframes spin2 from webkit transform rotateX 135deg to webkit transform rotateX
  • 安装因错误而失败 (Eclipse)

    当我尝试安装安装完成时出现错误 安装失败并出现错误 显示日志 即使我以管理员身份运行它也会发生这种情况 我使用的是 Windows 7 Professional 64 位 当我单击显示日志时 这就是我的情况看 2017 04 03 20 3
  • Apache-Ignite 集成作为 Hibernate 二级缓存未启动?

    我正在尝试将 Apache Ignite 设置为我的项目中的第二级 Hibernate 缓存提供程序 但我遇到了一个奇怪的异常 配置如下 POM xml Added
  • ggplot 中其他点的图例

    举这个问题的例子 Link 我想问是否可以在图例中添加额外的蓝点 dat lt data frame cond rep c A B each 10 xvar 1 20 rnorm 20 sd 3 yvar 1 20 rnorm 20 sd
  • 如何将变量从 php 发送到 Android 应用程序?

    大家好 我当前的 Android 应用程序中有一个活动 其中有一个网络视图 我想知道如何从该网站上的 php 获取变量并将其存储到我的 android 应用程序上的变量中 是的 我控制该网站 并且具有完整的编辑功能 我会解释一般需要做的事情
  • 在 OSX 上隐藏 Tkinter 应用程序的控制台

    当我启动基于 GUI Tkinter 的应用程序时 我试图隐藏终端 但是当我双击 OSX 上的 app py 文件时 会出现终端窗口 我尝试将扩展名更改为 pyw 并尝试使用 usr bin pythonw 启动它 但无论如何 终端窗口仍然
  • 无法快速移动键盘视图iOS9

    我需要实现一个拒绝键盘 向下滑动以拒绝 就像 iOS 上的股票消息应用程序中的键盘一样 我有这段代码来获取键盘视图 func keyboardWillShowWithNotification notification NSNotificat
  • 为什么 JQuery ajax 调用后页面会重新加载?

    我的目录如下 根目录 Create php根 资源 js ajaxLibrary js 在我的 create php 文件中 我有一个如下所示的表单
  • 使用位图的列表视图

    我一直在尝试创建列表视图的位图 其中整个列表视图在屏幕上不可见 我在用 Bitmap mBitmap fullView getDrawingCache 创建位图 它适用于屏幕上可见的列表视图部分 但不适用于不可见的部分 我想知道是否可以创建
  • 我可以使用 localhost 在 SDK 中测试 XMLHttpRequest() 吗?

    以下代码似乎不起作用 因为当我尝试在 Google App Engine Python 中获取 选择器 时 它是未定义的 chooser self request get chooser self response out write ch
  • 即使应用程序未运行,也处理 onMessageReceived() 和 onTokenRefresh()

    我有一个包含 2 项服务的应用程序 MessagingService extends FirebaseMessagingService and InstanceIDService extends FirebaseInstanceIdServ
  • 单元格上的 VBA 通配符搜索

    我正在尝试在单元格值中使用通配符搜索来查找某些内容 如果sheet FC Range I2 I LastRowC 中的值 与Sheets Instr Range A130 A190 匹配 表示如果少数字符与上述其他范围匹配 则表 Instr
  • NHibernate 配置连接到 Visual FoxPro 8.0?

    好奇是否有人曾经将 NHibernate 连接到 Visual Foxpro 8 0 我希望连接到遗留数据存储 并且更愿意使用 NHibernate 而不是必须手动编码所有 ADO Net 如果有人有 FoxPro 8 连接的配置 XML
  • 组装为什么lea快?

    我和我的教授交谈过 他说 leaq rax rax 8 比以下速度更快 imulq 9 rax 我问他为什么 在这两种情况下 我们都用几乎相同的数字进行乘法 他说我们不会讨论这个 有人可以帮助我简单地理解为什么 leaq 总体上很快吗 评论
  • 使用页面工厂设计和页面对象模型进行测试,使用 Selenium 和 Java 打开浏览器的两个实例

    我在 Selenium WebDriver 中使用页面对象模型进行了测试 如果我运行以下测试 在 Chrome 浏览器中打开两个窗口 第一个窗口在 URL 行中为空 如何只打开一个带有 onet pl URL 的内容 我尝试删除 Chrom
  • Hibernate 抛出 MultipleBagFetchException - 无法同时获取多个包

    Hibernate 在 SessionFactory 创建期间抛出此异常 org hibernate loader MultipleBagFetchException 无法同时获取多个包 这是我的测试用例 父类 java Entity pu