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调用将大量用户批量加载到数据库时,会发生此错误。我没有通过拆卸来关闭缓存管理器。
答案 0 :(得分:2)
从描述中可以看出,实体的二级缓存已经满了,其中一些缓存已经过早地从底层的ehcache中逐出。你是flush
&批量插入期间定期clear
休眠Session
,如documentation中提到的那样?
答案 1 :(得分:1)
您可能还想查看使用Stateless Session。如果没有,正如@Binil Thomas所说,你将需要flush
和clear
你的会话来释放资源。
答案 2 :(得分:0)
将maxElementsInMemory增加到0.有关详细信息,请参阅see this