使用EJB構建Web應用程序& JSF中的JPA我想知道如何獲取實體的修改字段。JPA:修改後的獨立實體和原始實體之間的差異
讓我們舉個簡單的例子:
@Entity
@Table
public class User implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false)
private Integer id;
@Column(name = "firstname", nullable = false, length = 45)
private String firstname;
// ...
}
現在在我的EJB的方法「編輯」:
@Singleton
public class UserService {
@PersistenceContext
protected EntityManager em;
public void edit(User user) {
this.em.merge(user);
}
}
我想知道是什麼改變了,例如說「用戶爲先命名爲'約翰',他現在'約翰'!「。
我正在做的步驟:
1)搜索用戶ID爲1 2)顯示的形式(如HTML)幫助使用JSF(結合通過JSF管理) 3)姓名字段進行編輯 4 )表單被提交,我得到我的用戶對象編輯 5)在堅持它之前,我想比較舊的 6)問題是,我不能使用this.em.find(1);
獲取它,因爲我已經得到它
我試過了:
@Singleton
public class UserService {
@PersistenceContext
protected EntityManager em;
public void edit(User user) {
System.out.println("USER 1 : " + user.getFirstname());
User u2 = this.em.find(User.class, 1);
System.out.println("USER 1 : " + user.getFirstname());
System.out.println("USER 2 : " + user.getFirstname());
this.em.merge(user);
System.out.println("USER 1 : " + user.getFirstname());
System.out.println("USER 2 : " + user.getFirstname());
}
}
我越來越:
USER 1 : johny
USER 1 : johny
USER 2 : johny
USER 1 : johny
USER 2 : johny
我敢肯定的是JPA內部不知道什麼已經被修改,有一個神奇的方法或我將保留我自己的舊值或使用SQL查詢數據庫自己例如?
嗨,先生@詹姆斯這個職位幫助。但是也許你也知道OpenJPA的對應。我發佈問題在這裏(http://stackoverflow.com/questions/32065813/jpa-context-getting-original-value-from-database)。謝謝 – Fritz