EntityManager (JPA)를 사용하여 DAO에서 Update () 메소드를 구현하는 방법은 무엇입니까?
-
05-07-2019 - |
문제
간단한 업데이트를 구현하는 표준 방법은 무엇입니까?
예 : 전화 번호 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
}
해결책
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);
다른 팁
속성을 변경 한 다음 EntityManager Merge ()를 사용하십시오.
http://java.sun.com/javaee/5/docs/api/javax/persistence/entitymanager.html#merge%28t%29
제휴하지 않습니다 StackOverflow