实施简单更新的标准方法是什么?
示例:我们的用户电话号码为NNNNNN,现在我们要将其设置为YYYYYY。
@PersistenceContext
private EntityManager em;
public void update (User transientUser) {
what should be here?
}
用户实体尽可能简单:
@Entity
@Table (name = "USER")
public class User {
@Id
@GeneratedValue
private Integer id;
@Column (nullable = false, unique = true)
private String login;
private String phone;
public User () { }
... //some setters and getters
}
答案 0 :(得分:45)
根据JPA规范,EntityManager#merge()
将返回对另一个对象的引用,而不是当对象已在当前上下文中加载时传入的对象。所以,我宁愿返回merge()
的结果,并像这样写update()
方法:
@PersistenceContext
private EntityManager em;
public User update (User transientUser) {
return em.merge(transientUser);
}
然后,像这样使用它(跳过初始化部分):
user.setPhone("YYYYYY");
user = dao.update(user);
答案 1 :(得分:2)
更改属性,然后使用EntityManager merge()
http://java.sun.com/javaee/5/docs/api/javax/persistence/EntityManager.html#merge%28T%29