現在、バックエンドエンティティにアクセスするためにeclipselinkJPAプロバイダーを使用しています。データにアクセスするために名前付きクエリを使用し、クエリキャッシュで以下のオプションを使用しています。
@NamedQueries({
@NamedQuery(name = Supplier.FIND_ALL, query = "select o from Supplier o",hints={
@QueryHint(name=QueryHints.READ_ONLY, value=HintValues.TRUE),
@QueryHint(name = QueryHints.QUERY_RESULTS_CACHE, value = HintValues.TRUE),
@QueryHint(name = QueryHints.CACHE_STATMENT, value = HintValues.TRUE),
@QueryHint(name = QueryHints.CACHE_STORE_MODE, value = "REFRESH"),
@QueryHint(name = QueryHints.CACHE_RETRIEVE_MODE,value=CacheUsage.CheckCacheThenDatabase),
}),
})
また、エンティティで以下のキャッシュオプションも使用しています。
@Cache(refreshOnlyIfNewer=true,
coordinationType=CacheCoordinationType.SEND_OBJECT_CHANGES,alwaysRefresh=true)
クエリは初めて時間がかかるようですが、さらに取得するにはかなり高速です(b'cozs of QueryHints.QUERY_RESULTS_CACHE, value = HintValues.TRUE
)。しかし、その後のデータベースへの変更は、出力に反映されていないようです。キャッシュが更新されておらず、データベースへの更新された変更が出力に反映されていないようです。
同じ上で助けが必要です。
ありがとう、クリシュナ