【发布时间】:2011-06-10 11:47:43
【问题描述】:
我有一个长期运行的 EntityManager,我会定期 clear()。我在我的一个实体上配置了读写缓存。
我进行了一些调查,我可以看到该实体存在于缓存中。我什至可以看到来自net.sf.ehcache.Cache.searchInStoreWithStats() 的缓存命中。但是,如果实体的时间戳晚于创建会话时的时间戳,ehcache 将不会返回该实体:参见AbstractReadWriteEhcacheAccessStrategy.get(Object, long)。
这种行为的原因是什么?有没有一种方法可以自定义 hibernate 或 ehcache 以在单个 EntityManager 中实现缓存命中?
【问题讨论】:
-
抱歉指出显而易见的问题,但是您是否覆盖了等号和哈希码?如果你这样做了,你确定它们是正确的吗?
-
在实体上?是的,我有。不过,我不确定这是否重要,因为 Hibernate 不会将实体本身存储在二级缓存中。