hereと記載されているように、双方向の多対多関係を介して関連する一対のHibernateエンティティAとBがあります。各エンティティの主キーを含むリンクテーブルを有する、他のタイプのエンティティのコレクションを参照する鞄。Hibernate L2キャッシングと多対多の関係
私はまた、このように、コレクションの値をキャッシュするためにHibernate L2キャッシュを使用しています:
<bag name="xyz" table="XYZ" ...>
<cache usage="nonstrict-read-write"/>
</bag>
私が発見しています問題は、私は1つの側からの関係、上のアイテムのキャッシュされたコレクションを更新するときにということです反対側は更新されません。
例えば:
A a = session.get(1L, A.class);
B b = a.getBs().get(0);
Long bId = b.getId();
a.getBs().remove(0) // delete the B from A
// ... flush and commit the transaction...
B b2 = session.get(bId, B.class);
Collection<A> as = b2.getAs();
コレクションとして、まだデータベースの状態は関係が削除されたという事実を反映しているにもかかわらず、への参照が含まれています。キャッシュを無効にした後、Hibernateは正しい結果を返します。
hibernateには、関連するエンティティのキャッシュ無効化を処理するためのメカニズムがありますか、または両方の関係から関係を削除する必要がありますか?
私はHibernate 3.2.6を使用しています。