2013-04-22 63 views
2

如何从entitymanager老去实体JPA?如何从JPA中的entitymanager获取旧实体?

代码:

 
    Address address=em.find(Address.class,1); 
    System.out.println("Name of Address: "+address.getAddressName); // China 
    address.setAddressName("Russia"); 
    Address address1=em.find(Address.class,address.getAddressId()); 
    System.out.println("Name of Address: "+address1.getAddressName); //????????? 

我怎样才能得到我的回答是 “中国制造”?

回答

4

使用不同的EntityManager。任何特定的EntityManager将永远只返回一个具有特定标识的对象(缓存在L1缓存中)

1

em.refresh(address1)

应该工作,因为它刷新从数据库(“中国”)覆盖(“俄罗斯”)来完成的对象更改的对象状态。

变量的地址和地址1是参考相同的对象,这样既address.getAddressName()和address1.getAddressName()返回的“中国”。

数据库仍然有旧值,直到 em.merge(address); em.flush();被调用。

相关问题