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 に答える