2

OpenSessionInViewInterceptorを使用してLazyInitializationExceptionを回避しています。「遅延コレクションを遅延して初期化できませんでした」OSIVパターンを使用しても例外が発生する

正常に動作しましたが、OSIVを使用していてもLazyInitializationExceptionが発生することがあります。例外は、このようなものです:

SEVERE: Servlet.service() for servlet [appServlet] in context with path [] 
    threw exception [Request processing failed; nested exception is 
    org.apache.tiles.impl.CannotRenderException: ServletException including path 
    '/WEB-INF/views/home/master.jsp'.] with root cause org.hibernate.LazyInitializationException: 
    failed to lazily initialize a collection of role: com..., 
    no session or session was closed 
     at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersisten 
tCollection.java:383) 
     at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(Abs 
tractPersistentCollection.java:375) 
     at 

もっと奇妙なことは、例外ログは、ログファイルのみであり、ウェブサイトをナビゲートするために何ら問題はありませんということです。

どうしてですか?

+0

アプリケーションでスレッドを実行していますか? OpenSessionInViewInterceptorを設定するapplicationContext.xml/web.xmlの関連部分を表示できますか?また、例外の原因となるコードの領域を確認するのに役立つでしょう。 –

答えて

0

これは、通常、デタッチされたオブジェクトで作業するときに発生します。 Hibernateがセッションを処理できるように、オブジェクトをセッションに再接続する必要があります。

使用session.merge()またはsession.refresh()ここ

あなたもいくつかの例があります。私の場合はWhat is the proper way to re-attach detached objects in Hibernate?

0

を、それがあるため、キャッシュされたオブジェクトでした。キャッシュされたオブジェクトがデタッチされると、後で初期化されていない一部のプロパティにアクセスする際に、LazyInitializationExceptionが発生しました。

関連する問題