我正在使用 eclipselink JPA 和数据库,该数据库也在我的应用程序外部进行更新。因此,我想每隔几秒钟查询一些表。即使我尝试禁用缓存和查询缓存,我也无法使其工作。例如:
EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("default");
EntityManager em = entityManagerFactory.createEntityManager();
MyLocation one = em.createNamedQuery("MyLocation.findMyLoc").getResultList().get(0);
Thread.sleep(10000);
MyLocation two = em.createNamedQuery("MyLocation.findMyLoc").getResultList().get(0);
System.out.println(one.getCapacity() + " - " + two.getCapacity());
即使在我的应用程序休眠时容量发生变化, println 始终会为 1 和 2 打印相同的值。
我已将以下内容添加到 persistence.xml
<property name="eclipselink.cache.shared.default" value="false"/>
<property name="eclipselink.query-results-cache" value="false"/>
我一定错过了一些东西,但我已经没有想法了。
James
问题是您正在阅读 PersistenceContext/EM,它维护数据的对象事务视图,除非刷新,否则永远不会更新。
将查询刷新属性“eclipselink.refresh”添加到查找调用 (JPA 2.0) 或在初始查找后简单地调用 em.refresh。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)