当前使用 eclipselink JPA 提供程序来访问后端实体。我正在使用命名查询来访问数据并使用以下查询缓存选项。
@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
)来说非常快。但似乎随后对数据库的任何更改都没有反映在输出中。似乎缓存没有被刷新,并且对数据库的更新更改没有反映在输出中。
需要相同的帮助。
谢谢,克里希纳