2013-04-22 62 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();被調用。

相關問題