为什么我看到针对UpdateTimestampsCache的缓存未命中?

时间:2014-10-07 16:24:44

标签: spring hibernate ehcache spring-boot spring-data-jpa

有人可以向我解释为什么在使用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);
}

0 个答案:

没有答案