2011-05-03 3 views
0

개체 A에 @ 개체를 B 개체에 넣었으므로 개체 A에는 개체 B의 ID에 대한 참조가 포함되어 있으며 데이터베이스의 개체 B를 삭제하려고합니다. 객체 A에 대한 참조입니다.이 작업을 수행하는 데 가장 적합한 솔루션이 무엇인지 궁금합니다. 개체 A에 대한 속성 b를 null로 설정하려고 할 때 삭제를 수행하려는 순간에 개체가 분리됩니다. 나는 여러 가지 해결책을 시도했고 다음과 같은 광범위한 예외를 보아왔다. -p최대 절전 모드로 분리 된 개체를 사용하여 행과 참조 삭제하기

+0

시도해 본 내용을 말씀해 주시겠습니까? 개체가 분리 된 경우 해당 엔터티를 삭제하는 쿼리를 사용한다고 가정합니다. –

+0

나는 쿼리를 사용하고 있지 않습니까? 에릭의 대답처럼 물건을 사용해서 할 수 있을까? –

+0

엔티티가 분리되었다고하셨습니다. Eric 대답에 대한 의견에서 쓴 것처럼 먼저 첨부하지 않고 수정할 수는 없습니다. 당신은 질의로 그것을 할 수 있고 그것은 (성능면에서) 더 빠릅니다. –

답변

1

이런 식으로 해봤습니까?

ojbecttA.setB(null); 
session.update(objectA); 
session.delete(objectB); 

가장 적절한 방법은, 내보기에, null로 재산

  • 다음 삭제할 개체를 삭제를 설정하여 두 엔티티를 해제 첫

    1. 이다.
  • +0

    나는 아이디를 사용하여 객체 A와 B를 검색 한 다음 말한 것처럼 그것을 수행함으로써 작동하는 "솔루션"을 발견했습니다. 그래도 간단한 작업을 수행하는 코드 5 줄은 내가 생각하는 최상의 솔루션이 될 수 없다. –

    +0

    한 번의 호출로 연결하고 업데이트하는 방법이 있어야한다. 나는 당신이 update()로 할 수 있다고 생각했지만 아마도 병합() 할 것입니다. 근본적으로 Nobody가 말했듯이, 업데이트하기 전에 인스턴스를 첨부해야합니다. – Eric

    0

    Hibernate 기반 솔루션 외에도 외래 키를 ON DELETE SET NULL으로 선언하여 데이터베이스에 자동으로 지시하도록 지시 할 수 있습니다.

    +0

    주석이 있는지 궁금합니다 ... –

    관련 문제