2013-04-25 2 views
0

두 개의 엔티티 클래스 A와 B와 인스턴스 a, b (a와 b는 동일한 id를 가짐)가 있습니다. B는 A의 하위 클래스 (B는 A를 확장)입니다. 데이터베이스에서 엔티티 "b"를 제거했습니다. 그런 다음 "a"가 삭제되지 않은 것을 보았습니다. 사실 그것은 내가 정말로 원하는 것입니다. 그러나 내 코드의 일부 지점에서 "a"도 제거하려고합니다. 하지만 entityManager.remove (a)를 수행하면 분리 된 엔티티를 제거 할 수 없다는 예외가 발생합니다. 그것은 하위 클래스 엔티티를 제거하는 것으로 보이는데 수퍼 클래스 엔티티가 데이터베이스에 남아 있더라도 수퍼 클래스 엔티티는 분리됩니다. 아무도 날 인스턴스를 제거하는 데 도움이 될 수 있습니다.Hibernate에서 서브 클래스 엔티티가 제거 된 수퍼 클래스 엔티티를 삭제하는 방법은 무엇입니까?

참고 : a와 b는 동일한 ID를 갖기 때문에 b를 만들 때 자동으로 동일한 id (계승 규칙)가 생성됩니다.

+0

실제로 테이블 a와 b에는 두 개의 레코드로 표시되는 하나의 엔티티 b 만 있습니다. 어떻게 b 레코드를 제거 했습니까? – phlogratos

+0

답장을 보내 주셔서 감사합니다. 네이티브 SQL 쿼리로 삭제했습니다. – Carlos

답변

0

session.delete(b)을 사용해야합니다. 이렇게하면 데이터베이스에서 두 레코드가 모두 삭제됩니다.

원시 SQL 삭제 문을 사용하여 b 레코드를 삭제 한 후에는 원시 삭제 문을 사용하여 해당 레코드를 삭제해야합니다.