2009-11-27 7 views
16

簡易アップデートを実装する標準的な方法は何ですか?EntityManager(JPA)を使用してDAOでupdate()メソッドを実装する方法は?

例:電話番号NNNNNNのユーザーがおり、今度はYYYYYYに設定します。

@PersistenceContext 
private EntityManager em; 

public void update (User transientUser) { 
    what should be here? 
} 

Userエンティティを可能な限り単純である:

@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

em.merge:このようにそれを使用する(初期化部分をスキップ)、その後

@PersistenceContext private EntityManager em; public User update (User transientUser) { return em.merge(transientUser); } 

:だから、私はむしろmerge()の結果を返すだろうし、このようupdate()メソッドを書きますtransientUser)? – marcosbeirigo

+0

多分、私は確かに – Roman

+0

、これは私が今持っているものです。しかし、ユニットテストのコンテキストを構成するのはそれほど簡単ではないので、まだテストしていません。 – Roman

答えて

33

)(マージを使用、EntityManager#merge()が返されますもう1つはオブジェクトはオブジェクトが別のときに渡されたもの現在のコンテキストにロードされています。 (

user.setPhone("YYYYYY"); 
user = dao.update(user); 
関連する問題