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;
}
Child.java
@Entity
public Child {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
@ManyToOne
private Parent parent;
}
この問題はどうですか?私に何ができる?
編集
OK、私が抱えている問題は、別の「親」エンティティが親の中にあることです。私の実際の動作は次のとおりです。
親.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;
}
別の親.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)
代わりに使用することです(解決策についてBozhoFetchType
に感謝します)。