ホームページ >Java >&#&チュートリアル >SessionFactory の作成中に Hibernate の MultipleBagFetchException を解決するにはどうすればよいですか?

SessionFactory の作成中に Hibernate の MultipleBagFetchException を解決するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-24 16:45:15293ブラウズ

How to Resolve Hibernate's MultipleBagFetchException During SessionFactory Creation?

Hibernate SessionFactory 作成中の MultipleBagFetchException

SessionFactory の作成中に「MultipleBagFetchException: 複数のバッグを同時にフェッチできません」例外が発生した場合は、検査することが重要ですエンティティ

この例では、Parent には Child への OneToMany 関係が含まれています。さらに、親の子のリストが熱心に取得されます。ただし、別の「親」エンティティ AnotherParent を Parent に含める場合、積極的にフェッチされた 2 つのコレクションが存在するためにエラーが発生します。

この問題を解決するには、FetchType.EAGER を使用する代わりに、コレクション フィールドにアノテーションを付けることを検討してください。 @LazyCollection(LazyCollectionOption.FALSE)。このアプローチにより、コレクションの積極的なフェッチが回避され、例外が排除されます。

ほとんどの場合、Set は、 List よりも適切です。親と子の関係を表すために。 List に対する特別なニーズがない限り、Set を使用すると、前述の問題を軽減できます。

この解決策は例外に対処していますが、注意して進めることが重要です。 Vlad Mihalcea が「最悪の解決策」とラベル付けした回答で説明しているように、セットを単独で使用してもデカルト積の可能性が完全に排除されるわけではありません。

以上がSessionFactory の作成中に Hibernate の MultipleBagFetchException を解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。