0

エラー:

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 

だから私には学生がいます(たくさんのロッカーがあります)。これで、学生がセキュリティサービスにログインすると、セッションへの参加が処理されます。次に、メインコントローラーがアクティブなロッカーを持っているかどうかを確認します。そうでない場合は、それらのために作成します。今、何らかの理由で、それは学生–>ロッカーの関係を窒息させています。

4

1 に答える 1

2

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

  • 使用fetch=FetchType.EAGER-コレクションに含まれるオブジェクトが多すぎる可能性が低く、他のコレクションが含まれている場合は、これが最も簡単なオプションです-所有者と一緒にデータベースからオブジェクトをフェッチするだけです

  • OpenSessionInViewを使用します-これにはある程度の構成時間が必要ですが、この特定の場合ではない場合でも、最終的には必要になる可能性があります。ただし、GrailsでOSIVを構成する方法を正確に説明することはできません。

  • セッションが閉じられる前(およびトランザクションがコミットされる前)に使用Hibernate.initialize(collection)する-これは手動であり、コードを汚染するため、あまり好ましくありません

于 2011-01-22T07:48:19.753 に答える