Hibernate二级缓存已清除

时间:2016-02-11 16:06:37

标签: java hibernate jpa ehcache hibernate-search

我们在我们的一个应用程序中使用Hibernate Search 3.4.2 Final和EHCACHE 2.3.1。 Hibernate Search索引的数据是只读的。出于性能原因,我们将完整数据加载到二级缓存中。

有些时候意外发生了清除完整的二级缓存的事情。这必须是我们的代码未明确触发的事情。

有人有推定吗?是否有可能在回滚事务中使用Hibernate Search会导致此行为?

EDIT1:

这是我们的EHCACHE配置:

<ehcache updateCheck="false">
    <diskStore path="java.io.tmpdir/ds42" />

    <defaultCache maxElementsInMemory="200000" eternal="true"
              statistics="true" overflowToDisk="true" diskPersistent="false"
              diskExpiryThreadIntervalSeconds="3600" memoryStoreEvictionPolicy="LRU"/>
</ehcache>

1 个答案:

答案 0 :(得分:1)

这种“惊人”行为的答案可以在this article内找到。

添加

query.unwrap(org.hibernate.SQLQuery.class).addSynchronizedQuerySpace("");

防止Hibernate清除二级缓存。