誰でもこの質問を解決するのを手伝ってくれますか? Infinispan を二次キャッシュとして使用し、Hibernate を ORM として使用しています。enityt とクエリ キャッシュの両方をオンにしました。
たとえば、Q1 は「BokkEntity b からの selet b where b.id < 5」であり、Q2 のような別のクエリは「select b from BokkEntity b where b.id < 7」
です。初めて Q1 を実行すると、5 がロードされます。永続ストアからキャッシュへのオブジェクト。2 番目のクエリを初めて実行すると、7 つのオブジェクトがキャッシュに読み込まれます。最初の 5 つのオブジェクトは両方のクエリで共通です。そして、私の理解によると、クエリ キャッシュは常に ID を格納するだけであり、エンティティ キャッシュがオンになっている場合、クエリ キャッシュ内の ID によって参照されるオブジェクトのキャッシュ内で検索が行われます。
したがって、私の質問は、Q2 (q1 の実行後) を初めて実行しているときに、両方の Q2 がすべてのオブジェクトを再度読み込み、エンティティ キャッシュでこれらを上書きする理由です。
クエリキャッシュが後続のリクエストに対して適切に機能していることを確認しました。つまり、Q1 または Q2 を再実行すると、データはキャッシュからアクセスされます。
これは緊急です。努力に感謝します。
ありがとう
ミーナ