返回我使用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