我在persistence.xml中设置了二级缓存,并配置了需要缓存的每个实体,如下所示:
的persistence.xml:
<shared-cache-mode>ENABLE_SELECTIVE</shared-cache-mode>
<properties>
<property name="hibernate.cache.region.factory_class" value="net.sf.ehcache.hibernate.EhCacheRegionFactory"/>
<property name="hibernate.cache.use_second_level_cache" value="true"/>
<property name="hibernate.cache.use_query_cache" value="true"/>
</properties>
实体:
@Cache(usage = CacheConcurrencyStrategy.READ_ONLY)
我有一个JPQL查询,它引用的所有实体都标记为可缓存,不知怎的,我一直在访问数据库,而不是从缓存中获取它。
目前ehcache.xml具有以下内容:
<defaultCache eternal="false" maxElementsInMemory="100000"
overflowToDisk="false" diskPersistent="false" timeToIdleSeconds="0"
timeToLiveSeconds="3600" memoryStoreEvictionPolicy="LRU"/>
<cache
name="org.hibernate.cache.StandardQueryCache"
maxEntriesLocalHeap="10000"
eternal="false"
timeToLiveSeconds="3600"
memoryStoreEvictionPolicy="LRU"/>
如何让JPQL查询代替缓存?看起来直接的hibernate查询有这个setCacheable,但在JPQL中没有这个..
任何帮助表示感谢。
格雷格