为了账号安全,请及时绑定邮箱和手机立即绑定

Hibernate不能同时获取多个包。

Hibernate不能同时获取多个包。

烙印99 2019-07-13 16:52:43
Hibernate在SessionFactory创建期间抛出此异常:org.hibernate.loader.MultipleBagFetchException:不能同时获取多个包这是我的测试用例:Parent.java@Entitypublic 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;}Child.java@Entitypublic Child {  @Id  @GeneratedValue(strategy=GenerationType.IDENTITY)  private Long id;  @ManyToOne  private Parent parent;}这个问题怎么样?我能做什么?
查看完整描述

3 回答

?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

我认为更新版本的Hibernate(支持JPA2.0)应该处理这个问题。但是,否则您可以通过用以下内容注释集合字段来解决这个问题:

@LazyCollection(LazyCollectionOption.FALSE)

请记住移除fetchType属性的@*ToMany注释

但请注意,在大多数情况下,Set<Child>List<Child>所以除非你真的需要List-去争取Set


查看完整回答
反对 回复 2019-07-13
?
aluckdog

TA贡献1847条经验 获得超7个赞

在尝试了本文和其他文章中描述的每一个选项之后,我得出了这样的结论:修复是如下所示。

在每个XToMany的地方@XXXToMany(mappedBy="parent", fetch=FetchType.EAGER)以及之后的中间

@Fetch(value = FetchMode.SUBSELECT)

这对我有用


查看完整回答
反对 回复 2019-07-13
  • 3 回答
  • 0 关注
  • 628 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信