我们在我们的一个应用程序中使用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>
答案 0 :(得分:1)
这种“惊人”行为的答案可以在this article内找到。
添加
query.unwrap(org.hibernate.SQLQuery.class).addSynchronizedQuerySpace("");
防止Hibernate清除二级缓存。