2

LazyInitializationExceptionを回避するために OpenSessionInViewInterceptorを使用しています。

それはうまくいきましたが、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 

さらに奇妙なことは、例外ログがログ ファイルにのみあり、Web サイトをナビゲートするのに問題がないことです。

これはどうしてですか?

4

2 に答える 2

0

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

session.merge()またはを使用するsession.refresh()

ここにもいくつかの例があります:Hibernateでデタッチされたオブジェクトを再アタッチする適切な方法は何ですか?

于 2012-04-11T03:43:05.477 に答える
0

私の場合、キャッシュされたオブジェクトが原因でした。LazyInitializationException後で初期化されていない一部のプロパティにアクセスしているときに、キャッシュされたオブジェクトがデタッチされたことが発生しました。

于 2012-05-21T06:55:10.993 に答える