2012-01-18 3 views
4

JPA 2와 Hibernate 3.6.8을 구현으로 사용하고 있습니다.JPA/Hibernate - 아이들과 함께 엔티티 분리하기

의 우리가 엔티티 있다고 가정 해 봅시다 Foo

내가 세션에서 전체 개체 그래프를 분리해야하고, 내가 entityManager.detach(foo)을 수행 할 때, 나는 IMO가 매우 카운터 직관적 인 bar이 부착 남아 놀랐다
@Entity 
public class Foo { 
    .... 
    @OneToOne 
    private Bar bar; 

    .... 
} 

. 관리 엔티티의 원인이

는 영속 컨텍스트에서 지정된 개체를 제거 : EntityManager에 대한 설명서를 읽기

는, 협회/자식 entites에 대해 아무것도 언급하지 않기 때문에이 예상되는 경우가 나타납니다 분리되기. 엔티티 제거 (엔티티 제거 포함)가있는 경우 엔 엔티티에 대한 변경 사항이 데이터베이스와 동기화되지 않습니다. 이전에 분리 된 엔티티를 참조한 엔티티는 계속이 엔티티를 참조합니다.

나는 간단히 entityManager.detach(foo.getBar())이라고 부를 수는 있지만 나중에 연관을 추가하면 수동으로도 분리되어야 함을 의미합니다.

리플렉션에 의지하지 않고이를 달성하는 편리한 방법이 있습니까? 물론

@OneToOne(cascade = CascadeType.DETACH) 
private Bar bar; 

답변

7

타입 DETACH의 폭포를 추가합니다. JB에 감사드립니다.
+0

... 아름다운 :) : – Asa