Java 如何在JPA中从entitymanager获取旧实体?
如何从JPA中的Java 如何在JPA中从entitymanager获取旧实体?,java,jpa,Java,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.getAddres
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); //?????????
Address Address=em.find(Address.class,1);
System.out.println(“地址名称:“+Address.getAddressName”);//中国
地址:setAddressName(“俄罗斯”);
AddressAddress1=em.find(Address.class,Address.getAddressId());
System.out.println(“地址名称:+address1.getAddressName”);/?????????
我如何才能得到“中国”的答案?使用不同的实体管理器。任何特定的EntityManager都只会返回具有特定标识的单个对象(缓存在一级缓存中)DataNucleus是正确的,但我建议使用带有查询提示的查询来绕过缓存,而不是使用EntityManager的第二个实例 请参阅em.refresh(地址1)
当它从数据库(“中国”)中刷新对象状态,覆盖(“俄罗斯”)对对象所做的更改时,应能正常工作
变量address和address1引用同一个对象,因此address.getAddressName()和address1.getAddressName()都返回“China”
数据库仍然具有旧值,直到
em.merge(地址);
em.flush()代码>被调用