春季MVC 3.0缓存
-
04-10-2019 - |
题
我正在使用Eclipselink和JPA的Spring MVC 3.0,并且正在遇到以下问题:我的应用程序中有此字段:
@OneToMany(mappedBy = "stadium")
private Set<FootballMatch> footballMatches = new HashSet<FootballMatch>();
当触发一些操作时,将新项目添加到集合中 Set.add()
, ,这些更改并未在浏览器中显示,尽管数据库中有新行。当我清除浏览器缓存时,什么也不会发生。我发现,即使没有单行更改,也可以将新值强制负载的方法进行重新部署。因此,该应用程序正在返回旧值,将其缓存在某个地方。如何强制它加载Allways更新值?我在想像 getLastModified()
, ,但我不知道我应该在哪里实施它。
解决方案
由于这是双向关系,因此请确保您正在建立关系的双方。
还要确保您正在更改,合并,合并正确的对象。
尝试使用entitymanager.refresh()刷新对象,您是否获得更新值?如果您不这样做,那么您的数据库将没有数据。
您是否正在缓存您的应用程序中的EntityManager?如果您周围有一个旧的EntityManager,将不会看到新的更改。通常,应为每个请求/事务创建一个新的EntityManager。
eClipSelink默认维护对象缓存,可以使用persistence.xml属性“ eclipselink.caching.shared” =“ false”禁用此对象缓存。
不隶属于 StackOverflow