2009-11-27 2 views
16

간단한 업데이트를 구현하는 표준 방법은 무엇입니까?EntityManager (JPA)를 사용하여 DAO에서 update() 메소드를 구현하는 방법은 무엇입니까?

예 : 전화 번호가 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

때 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() 반환합니다 또 다른 오브젝트에 대한 참조는 오브젝트가 alrea 일 때 전달 된 것보다 dy가 현재 컨텍스트에로드되었습니다. (

user.setPhone("YYYYYY"); 
user = dao.update(user); 
관련 문제