環境-
Hibernate- クエリ キャッシュと第 2 レベルのキャッシュが有効になっている
使用されるキャッシュ - updatetimestampcache が永久に設定された Ehcache。
問題- エンティティ E の場合、テーブルに 2 つの行があります。そのため、setcacheable(true) を使用した条件を介して (すべての行をフェッチするための) クエリでは、最初に 2 番目のレベルのキャッシュとクエリ キャッシュが読み込まれます。
setcacheable(true) を使用した条件を介した同じクエリの以降の実行は、クエリ キャッシュから提供されます。ここまでは順調ですね。
問題 - エンティティ E の新しいオブジェクトが休止状態を使用して保存された後 (現在、エンティティ E のテーブルには 3 行ありません)、トランザクション サービス レイヤー メソッドを使用します。エンティティ E の行を取得するための追加のクエリ (setcacheable(true) を使用) は、2 つのオブジェクトのみを返します。その中で 3 つのオブジェクトを返す必要があります。
新しいエンティティがそのテーブルに保存されるときに、エンティティ E のクエリ キャッシュが検証されていないようです。