EntityManager (JPA)를 사용하여 DAO에서 Update () 메소드를 구현하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1809159

  •  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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top