私が目にする以前の多くの質問のトピックですが、これほどではありません。Hibernates の遅延フェッチ戦略、open-session-in-view などは理解していますが、私の関連付けが何があっても遅延フェッチされる、この単純な小さなことに対する解決策を見つけることができないようです。
私のWebアプリはそれなしで構築されており、現在「移行」するのが複雑になっているため、ビューでオープンセッションを使用していません...
a <- b <- c <- d -> eなどの参照のチェーンがあるとしましょう
。たいていの場合、 a をフェッチすると、 b、c、およびdが必要になります。したがって、これらは常に熱心にフェッチされるように設定されています (lazy=false
休止状態のマッピング ファイルで指定することにより)。これは機能します!!
ただし、 d がフェッチされるたびに、関連付けeを常に熱心にフェッチする必要もあります。eはdに対していくつかの論理演算を実行するために重要であるため。
そして、これが機能を停止する場所です... eは、dの多対1の関連付けとしてdに関連付けられています。これを に設定してlazy=false
もうまくいかず、まだ適切に初期化されておらず、dからeのプロパティにアクセスすると LazyInitialisationException が発生します。
これがうまくいくと期待するのは間違っていますか?lazy プロパティは、hibernate v. 3.2.6 および Spring バージョン 2.5.6 を使用して hbm ファイルで指定されます。
誰かが私のために物事を明確にしてくれることを願っています...
是非、別の投稿を見つけたら参考にしてみてください。これをカバーするものが見つからないようです...