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

时间:2010-05-27 13:17:24

标签: 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也始终会为一个和两个打印相同的值。

我已将以下内容添加到persistence.xml

<property name="eclipselink.cache.shared.default" value="false"/>
<property name="eclipselink.query-results-cache" value="false"/>

我必须遗漏一些东西,但我的想法已经不多了。

詹姆斯

2 个答案:

答案 0 :(得分:3)

问题是您正在阅读PersistenceContext / EM,它维护数据的Object Transactional视图,除非刷新,否则永远不会更新。

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

答案 1 :(得分:0)

@Entity
@Cache(shared=false)
public class Employee {
    ...
}

我希望它能解决您的缓存问题.........