返回我使用JPA的EntityManager与Spring/Hibernate和EntityManager的似乎是行为古怪,当我更新从Hibernate的Session的实体,然后从不同的休眠会话查看它的过时的值。JPA的EntityManager没有entityManager.clear
我在我的应用程序如下配置:
- 的EHCache和启用二级缓存的实体
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
- 扩展
PersistenceContext
上em
OpenEntityManagerInViewFilter
调用em.clear()
解决了这个问题。我试过禁用二级缓存,查询缓存等,但没有帮助。我希望这位实体管理者能够照顾到这一点。这是预期的吗?我正在寻找一种更清洁的方法,并取消拨打em.clear()
。
它可能是与URL有关的东西?我注意到,当我更新实体时,url是save.html,当我获取它的time/list.json时 - 这会导致陈旧。但是,当我尝试使用time/list.html进行提取时,它工作正常!即使这两个网址映射到使用相同的服务...我现在感到困惑。这是否扩展持久性上下文做基于URL的缓存? – Supra 2012-07-19 10:52:02
Hibernate知道也不关心你的Web应用程序的URL,因为它的设计在JavaSE中和JavaEE的环境中工作与'javax.servlet'的API不存在依赖关系(或与Web层有关的任何API)。您的问题必须与使用两个不同会话的事实相关。 – 2012-07-19 12:45:41
当然,我应该知道这一点。正如我所说,我感到困惑。 – Supra 2012-07-19 13:24:15