ホームページ > Java > &#&チュートリアル > Hibernate の「コレクションの遅延初期化に失敗しました」例外を修正するにはどうすればよいですか?

Hibernate の「コレクションの遅延初期化に失敗しました」例外を修正するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-11-30 05:45:19
オリジナル
448 人が閲覧しました

How to Fix Hibernate's

リレーションシップの反復中に Hibernate の「コレクションの遅延初期化に失敗しました」例外を解決する方法

この問題は、からコレクションにアクセスしようとすると発生します。現在のセッションで完全に初期化されていないエンティティ。この場合、最初のクエリ中に「Topic」エンティティの「comments」コレクションが取得されず、Hibernate 例外が発生します。

これを解決するには、コレクションが遅延ロードされることを理解する必要があります。 Hibernate のデフォルト。これは、親エンティティが取得されるときに要素が積極的にフェッチされるのではなく、実際にアクセスされるときに要素が取得されることを意味します。

「コメント」コレクションを積極的に読み込むには、「トピック」モデルのフィールド マッピングを次のように更新します。 :

@OneToMany(fetch = FetchType.EAGER, mappedBy = "topic", cascade = CascadeType.ALL)
private Collection<Comment> comments = new LinkedHashSet<>();
ログイン後にコピー

フェッチ戦略を FetchType.EAGER に設定すると、Hibernate は最初のクエリ中に明示的に「コメント」コレクションをフェッチします。 "topicById" インスタンスにアクセスするときにすべての要素が使用可能であることを確認します。

さらに、長時間実行される操作に対応するためにセッション タイムアウトを増やすか、@OpenSessionInView アノテーションを使用して JSP ビューのレンダリング中に Hibernate セッションが開いたままになるようにすることを検討してください。

以上がHibernate の「コレクションの遅延初期化に失敗しました」例外を修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート