これが私のシナリオです:
2 つの春のトランザクション (P = 必須、I = デフォルト) にまたがるプロセスがあります。
T1 で、B の空のコレクションを持つエンティティ A をインスタンス化しました。
A エンティティと B エンティティの両方、および oneToMany 関係は @Cache アノテーションでマークされています。
キャッシュ プロバイダーとして ehcache を使用しています。
T1 で、エンティティ A をマージしました。
T2 で、もう一度マージします。
問題は、エンティティ A が T2 にマージされるたびに、Hibernate が B のコレクションに対してクエリを実行することです。これは、B が 2 番目のレベルのキャッシュで見つけることができなかったためです。
コレクションがロードされるとすぐに、キャッシュが使用されます (新しいトランザクション T3 で同じマージを行った場合、キャッシュからコレクションが取得されます)。
このクエリが実行されないようにするにはどうすればよいですか? IE: ロードする前に、hibernate second-level-cache を新しく作成されたコレクションにする方法は?
また、第 1 レベルのキャッシュを使用して、T1 と T2 の間で 1 つの休止状態セッションをスレッド バウンドにすることも考えました (ただし、コレクションでも機能するかどうかはわかりません...)手順?これを達成する方法は?
TKS。