[解決済み] HibernateがMultipleBagFetchExceptionをスローする - 複数のバッグを同時にフェッチできない
質問
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;
}
チャイルド.java
@Entity
public Child {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
@ManyToOne
private Parent parent;
}
この問題はどうでしょうか?どうすればいいのでしょうか?
EDIT
OK、私の問題は、別のquot;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
(おかげさまで
ボジション
を解決してくれました)。
解決方法は?
新しいバージョンのハイバーネート(JPA 2.0をサポート)では、これを処理する必要があると思います。しかし、そうでない場合は、コレクションフィールドにアノテーションを付けて回避することができます。
@LazyCollection(LazyCollectionOption.FALSE)
を削除することを忘れないでください。
fetchType
属性は
@*ToMany
アノテーションを使用します。
しかし、ほとんどの場合
Set<Child>
よりも、より適切です。
List<Child>
が本当に必要でない限りは
List
- を狙う。
Set
しかし、セットを使用すると、次のことを忘れないでください。 はありません。 下敷きになるものを排除する 直交積 で説明したように Vlad Mihalcea氏による回答 !
関連
-
java.util.NoSuchElementException 原因解析と解決方法
-
Java Error スレッド "AWT-EventQueue-0" で例外発生 java.lang.
-
Java のエラーです。未解決のコンパイル問題 解決方法
-
javaの実行中に「javaの例外が発生しました」と表示された場合はどうすればよいですか?
-
ファインバグタイプ
-
プロジェクトの依存関係を解決できなかった 解決
-
スレッド "main" での例外 java.lang.ArrayIndexOutOfBoundsException: 1
-
linux run jarfile Invalid or corrupt jarfile error.
-
Exception: java.util.NoSuchElementException: 行が見つかりません
-
このラインで複数のマーカーを解決する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Enumとの組み合わせでswitchの使い方を一度覚えるために必要な定数式
-
プロジェクトの依存関係を解決できなかった 解決
-
エラーの解決方法 jarfile XXX.jarにアクセスできません。
-
スレッド "main" での例外 java.lang.ArrayIndexOutOfBoundsException: 1
-
javaコンパイル時のエラー:不正な文字 '\ufeff' に対する解決策です。
-
自動配線された依存性のインジェクションに失敗しました。
-
spring aop アドバイスからの Null 戻り値が、サマリーのプリミティブ戻り値と一致しない。
-
mavenプロジェクトのテストエラー java.lang.ClassNotFoundException: org.glassfish.jersey.client.ClientConfig の問題を解決する。
-
org.glassfish.jersey.servlet.ServletContainer
-
IDEA パッケージステートメントの欠落