2013-12-26 3 views
0
나는 다음과 같은 두 개의 엔티티 한

제거 : 예상대로JPA 삭제 자녀는 부모

public class Parent implements Serializable 
     @OneToMany(mappedBy="m_owner", targetEntity = Child.class, orphanRemoval=true) 
     List<Child> children; 

public class Child implements Serializable 
     @ManyToOne(targetEntity = Parent.class) 

나는 부모를 삭제

가, 아이들이 삭제하지만 난 아이를 삭제하면, 부모가 삭제되었습니다. 나는 어린이의 주석에 cascade=CascadeType.DETACH을 추가하려고 시도했지만 도움이되지 않았습니다. 자녀를 삭제하는 것이 부모에게 아무런 영향을 미치지 않도록하려면 어떻게해야합니까?

답변

3

내 문제는 자식을 삭제하기 위해 NamedQuery을 사용했기 때문에 발생했습니다.

@NamedQuery(name="Child.deleteById", query="Delete from Child child where child.m_id=:id") 

이것은 상위 엔티티를 설정하고 삭제 한 주석을 우회하는 것으로 보입니다.

이 문제를 해결하기 위해 삭제 서비스를 변경하여 모든 주석이 적용되는 지점 인 EntityManager.remove()을 사용했습니다.