caching - 禁用 eclipselink 缓存和查询缓存 - 不起作用?

标签 caching eclipselink

我正在使用 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"/>

我一定错过了一些东西,但我已经没有想法了。

詹姆斯

最佳答案

问题是您正在阅读 PersistenceContext/EM,它维护数据的对象事务 View ,并且除非刷新,否则永远不会更新。

将查询刷新属性“eclipselink.refresh”添加到查找调用 (JPA 2.0) 中,或者在初始查找后简单地调用 em.refresh。

关于caching - 禁用 eclipselink 缓存和查询缓存 - 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2921424/

相关文章:

java - Weblogic 10 上的 EJB3 - 首次访问数据库时超时

java - JPA 1.0 中缺少 NVL() 的解决方法

windows - 如何防止 Windows 缓存 Com Class 信息?

caching - Ehcache 按键统计

java - 回滚 Spring 3.1 缓存或驱逐

java - 评估 JPA 提供程序 : Market share of Hibernate/EclipseLink?

c# - 列出每个对象在 System.Runtime.Caching 内存缓存中占用的大小 c#

java - 使用 <applet> 或 <object> 标签加载依赖的 jar

java - MOXy JAXB javax.xml.bind.PropertyException

java - JAXB/Moxy 将 XmlElements 与 XmlAdapter 结合使用