2011-01-22 5 views
0

エラー初期化に失敗しました:GrailsのHibernateのSessionのトラブル - レイジーコレクション

Error 500: null 
Servlet: 
URI: 
Exception Message: failed to lazily initialize a collection of role: Student.lockers, no session or session was closed 
Caused by: Error executing tag <g:render>: Error executing tag <g:link>: failed to lazily initialize a collection of role: com.itzik.User.carts, no session or session was closed at grails-app/views/shared/_navigation.gsp:18 at grails-app/views/layouts/home.gsp:26 

だから私は(多くのロッカー付)学生を持っています。生徒がログインすると、セキュリティサービスがセッションに参加します。それから私のメインコントローラは、彼らがアクティブなロッカーを持っているかどうかをチェックします。そうでなければ、それを作成します。今何らかの理由で生徒 - >ロッカー関係が窒息しています。

答えて

2

あなたは、いくつかのオプションがあります。

  • 使用fetch=FetchType.EAGERを - コレクションが順番にそれらに他のコレクションを持っていることを、あまりにも多くのオブジェクトが含まれている可能性がない場合には、これが最も簡単なオプションです - あなたはちょうどそれらをフェッチ

  • 使用OpenSessionInView - これには設定時間が必要ですが、この特定のケースではなくても最終的に必要になる場合があります。私はgralexでOSIVをどのように設定するかを正確には伝えられません。セッションの前に

  • 使用Hibernate.initialize(collection)を閉じて(とトランザクションがコミットされる前に) - これは、手動で、これらのオプションの利点が何であるかを説明でき

+0

ので、あまり好ましくコードを、汚染します? –

+0

@Josh K - 1分で私の投稿をチェックする – Bozho

関連する問題