JBoss 6.1.0.Final、JSF 2.0.3、EJB3、JPA 2 +Hibernate3.3を使用してプロジェクトに取り組んでいます。
JSFページには、エンティティAのデータを入力するためのフォームが表示されていますが、そのエンティティAに関連付けられているB、C、およびDエンティティのリストもあります。これらのリストの1つはフォームの読み込み中に表示され、もう1つはセッションがないか、セッションが閉じられたためにLazyInitializationExceptionをスローするもの。
いくつかのSOとGoogleのブラウジングの後、私はいくつかの答えとEntityManagerをビューに保持するパターンを試しましたが、それらのどれも十分ではありません。Springにはorg.springframework.orm.jpa.support.OpenEntityManagerInViewInterceptorがあり、この状況をAFAIKで処理しているように見えますが、間違っている可能性があります。
リストにアクセスするメソッドを実行すると、例外がスローされます。
IA entityA = business.getListOfAs();// In AListBean
そして、私が行うフォームで:
entityA.getListofB(); //LazyInitializationException
Aレコードをフェッチするとすぐにリストにアクセスしません。途中にナビゲーションがあり、Bアイテムのリストをフェッチする前にセッションが閉じられます。
Aのデタッチされたインスタンスを再アタッチすると問題は解決しますが、オブジェクトをマージせずに(オブジェクトに加えられた変更を永続的に)、フェッチタイプをeagerに設定せずにそれを行う方法がわかりません。
怠惰なアプローチでAのB、C、Dエンティティのリストにアクセスする方法はありますか?