2010-05-27 58 views
2

我正在使用eclipselink JPA和一个数据库,这个数据库也在我的应用程序的外部进行更新。出于这个原因,我想每隔几秒查询一次表格。即使尝试禁用缓存和查询缓存,我也无法使其工作。例如:禁用eclipselink缓存和查询缓存 - 不工作?

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"/> 

我必须失去了一些东西,但我运行的想法。

詹姆斯

+0

在我的情况你提到的问题解决了2个属性。然而,我使用了一个请求范围的EntityManager。 – Jarekczek 2017-06-13 20:57:24

回答

3

的问题是,你是通过PersistenceContext/EM其保持数据的对象的事务视图,永远不会,除非刷新更新阅读。

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

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

我希望这将解决您的缓存问题.........