Hibernate不能同时获取多个包。

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;}

这个问题怎么样?我能做什么?


烙印99
浏览 629回答 3
3回答

慕田峪7331174

我认为更新版本的Hibernate(支持JPA2.0)应该处理这个问题。但是,否则您可以通过用以下内容注释集合字段来解决这个问题:@LazyCollection(LazyCollectionOption.FALSE)请记住移除fetchType属性的@*ToMany注释但请注意,在大多数情况下,Set<Child>比List<Child>所以除非你真的需要List-去争取Set

aluckdog

在尝试了本文和其他文章中描述的每一个选项之后,我得出了这样的结论:修复是如下所示。在每个XToMany的地方@XXXToMany(mappedBy="parent", fetch=FetchType.EAGER)以及之后的中间@Fetch(value&nbsp;=&nbsp;FetchMode.SUBSELECT)这对我有用
打开App,查看更多内容
随时随地看视频慕课网APP