Hibernateは、SessionFactoryの作成中にこの例外をスローします。
org.hibernate.loader.MultipleBagFetchException:複数のバッグを同時にフェッチできない
これは私のテストケースです:
Parent.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;
}
Child.java
@Entity
public Child {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
@ManyToOne
private Parent parent;
}
この問題はどうですか?私に何ができる?
編集
さて、私が抱えている問題は、別の「親」エンティティが私の親の内部にあることです。私の実際の動作は次のとおりです。
Parent.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はでの2つのコレクションが好きではありませんFetchType.EAGER
が、これはバグのようです。私は異常なことをしていません...
問題FetchType.EAGER
から削除Parent
またはAnotherParent
解決しますが、私はそれが必要なので、@LazyCollection(LazyCollectionOption.FALSE)
代わりに使用するのが本当の解決策ですFetchType
(解決策はBozhoに感謝します)。
select * from master; select * from child1 where master_id = :master_id; select * from child2 where master_id = :master_id
List<child>
てfetchType
ために定義された複数の List<clield>