有人可以向我解释为什么在使用ehCache监视器时我看到缓存未命中对UpdateTimestampsCache?我没有看到任何其他缓存的错过,实际上我没有在UpdateTimestampsCache中看到任何缓存的条目....我必须做错了SOMETHING。仅供参考,应用程序是一个Spring Boot应用程序,它使用Spring Data JPA和几个自定义查找程序方法,在我已标记为可缓存的几个存储库中。我启用了查询缓存。我在ehcache.xml中配置了查询缓存和updatetimestampscache:
<cache name="org.hibernate.cache.internal.StandardQueryCache" maxEntriesLocalHeap="10000" eternal="false" timeToIdleSeconds="3600"
overflowToDisk="true" diskSpoolBufferSizeMB="20" memoryStoreEvictionPolicy="LFU" transactionalMode="off"
statistics="true"/>
<cache name="org.hibernate.cache.spi.UpdateTimestampsCache" maxEntriesLocalHeap="10000" timeToIdleSeconds="3600"
eternal="true" overflowToDisk="true" diskSpoolBufferSizeMB="20" memoryStoreEvictionPolicy="LFU" transactionalMode="off"
statistics="true">
</cache>
这是我的一个Repository类和一个自定义finder方法的示例:
public interface PromotionServiceXrefRepository extends PagingAndSortingRepository<PromotionServiceXref, Integer> {
@Query("SELECT psx FROM Customer c " +
"JOIN c.customerProductPromotions cpp " +
"JOIN cpp.productPromotion pp " +
"JOIN pp.promotion p JOIN p.promotionServiceXrefs psx " +
"WHERE c.sonosId = ?1")
@QueryHints(@QueryHint(name = "org.hibernate.cacheable", value = "true"))
@Cache(usage = CacheConcurrencyStrategy.READ_ONLY, region = "promotionServiceXrefByCustomerId")
Set<PromotionServiceXref> findByCustomerId(int customerId);
}