1

私のクラスの映画には、監督と@OneToOneの関係があり、俳優と@ManyToManyの関係があります。これらすべてのクラス(映画、監督、俳優)のクラスは読み取り専用モードでキャッシュされ、コレクションも同様です。

ehCacheでHibernateの第2レベルのキャッシュを使用します。

関係はLAZYであるため、次の問題があります。ムービーがgetDirector()またはgetActors()を呼び出さずに第2レベルのキャッシュに到達した場合、これらのメソッドがその後Session.merge()なしで呼び出されると、LazyInitializationExceptionが発生します。これは私にとっての選択肢ではありません。

「キャッシュに入れる」というイベントにフックして、怠惰なメソッドを呼び出すことができれば、私の問題は解決すると思います。そんなことありますか?アプリケーションなどに応じて第2レベルのキャッシュがオン/オフになるため、カスタムインフラストラクチャコードを作成するのは気が進まない。

私は何か他のものが欠けていますか?

ありがとう。

4

1 に答える 1

0

リレーションシップがキャッシュされている場合、それらを LAZY フェッチすることで何を得ることができますか? それらをEAGERに変えるだけで、問題は解決します。

于 2011-03-16T12:45:55.503 に答える