2012-03-31 2 views
1

죄송 합니다만이 질문을하는 방법이 명확하지 않습니다. 여기 내 시나리오입니다 :JPA : 삽입 후 업데이트 된 엔티티 개체를 얻는 방법?

컨트롤러

HostSite hostSite=new HostSite(); 
hostSite.setUrl("www.somesite.com"); 
// hostSite.getId() is null, naturally 
hostSiteService.saveHostSite(hostSite); 
// hostSite.getId() is still null 

HostSiteServiceImpl

public void saveHostSite(HostSite hostSite) { 
    hostSiteDAO.save(hostSite); 
} 

HostSiteDAOImpl

public void save(HostSite hostSite) { 
    if(hostSite!=null) { 
     getEntityManager().merge(hostSite); 
    } 
} 

보시다시피, 어디서나 엔티티 개체 참조를 수정하지 않습니다. 병합 작업이 테이블 수준에서 초기화 된 데이터로 지속 된 개체를 업데이트한다는 인상이 커졌을 것입니다. 내 경우에는 자동 생성 된 ID뿐입니다. 하지만 생성 타임 스탬프 등과 같은 다른 것들이있을 수 있습니다.이 생성 된 ID를 지속 된 객체에 설정하려면 내가해야 할 일이 있습니까? 작업 자체에는 아무런 문제가 없습니다. 레코드는 생성 된 ID와 함께 테이블에 저장됩니다.

JPA 제공자를 위해 최대 절전 모드 4를 사용하고 있습니다.

답변

5

'merge()는 새 인스턴스를 반환하므로 모든 메소드가 엔티티를 반환하도록하십시오.