23

实现简单更新的标准方法是什么?

示例:我们有电话号码为 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
}
4

2 回答 2

56

根据 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);
于 2009-11-27T17:41:31.637 回答
2

更改属性,然后使用 EntityManager merge()

http://java.sun.com/javaee/5/docs/api/javax/persistence/EntityManager.html#merge%28T%29

于 2009-11-27T15:14:47.313 回答