软件锁定的缓存条目已被基础Ehcache过期

时间:2011-04-15 12:14:44

标签: hibernate caching jpa ehcache second-level-cache

Hibernate 3.3.x,ehcache 2.2.x

  
    

当我尝试一次发布大量用户时,会发生以下错误。知道为什么会发生这种情况以及如何纠正这个问题?有没有办法在批量加载用户之前禁用此缓存,如果是这样,我应该怎么做?

  
17:17:50,140 WARN [AbstractReadWriteEhcacheAccessStrategy] Cache
persistence.unit:unitName=my.ear/my-ejb-1.0.0.jar#my.com.mycompany.User.phones Key com.mycompany.User.phones#9915 Lockable : null

A soft-locked cache entry was expired by the underlying Ehcache.
If this happens regularly you should consider increasing the cache timeouts and/or capacity limits

EDIT1:

当我尝试通过JPA调用将大量用户批量加载到数据库时,会发生此错误。我没有通过拆卸来关闭缓存管理器。

3 个答案:

答案 0 :(得分:2)

从描述中可以看出,实体的二级缓存已经满了,其中一些缓存已经过早地从底层的ehcache中逐出。你是flush&批量插入期间定期clear休眠Session,如documentation中提到的那样?

答案 1 :(得分:1)

您可能还想查看使用Stateless Session。如果没有,正如@Binil Thomas所说,你将需要flushclear你的会话来释放资源。

答案 2 :(得分:0)

将maxElementsInMemory增加到0.有关详细信息,请参阅see this