2013-04-22 3 views
2

Как получить старую сущность от entitymanager в JPA?Как получить старую сущность от entitymanager в JPA?

Код:

 
    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)

должен работать как обновить состояние объектов из базы данных ("China") перезаписью ("Россия") изменений, сделанных на объект.

Адрес и адрес переменных1 относятся к одному и тому же объекту, поэтому оба address.getAddressName() и address1.getAddressName() возвращают «Китай».

База данных по-прежнему имеет старую ценность до тех пор, пока не будет выдан em.merge(address); em.flush();.

Смежные вопросы