2010-02-04 6 views
4

나는 콜렉션 (list.clear())을 지우거나 부모 콜렉션의 새로운 인스턴스를 생성하여 부모/자식 관계의 콜렉션을 지우려고한다. 이 유사Hibernate one shot delete

: http://markmail.org/message/mnvooa7g57dlbxta#query:+page:1+mid:mnvooa7g57dlbxta+state:results

내 테스트가 거의 동일 위의 링크의 하나입니다. 몇 가지 조합의 설정을 시도했지만 나 자신의 삶에 대해 각 자식 개체에 대해 SQL 삭제와 반대로 모든 자식에 대해 단일 SQL 삭제를 발행하도록 NHibernate를 가져올 수 없습니다. 나는 뭔가를 놓치고 있어야합니다.

+0

코드를 게시 할 수 있습니까? – David

+0

오늘 밤에 나중에 코드를 게시 할 수 있습니다. 나는 Oren의 동일한 테스트를 한 후에 예제를 만들었지 만 Fluent를 사용하여 매핑을 수행했습니다. 거기에서 여러 변형을 시도했습니다. –

답변

2

흥미로운 게시물입니다. NHibernate Jira?에서 ayendes problem을 (를) 추적 해 봤어? 나는 노력했다. Sergey Koshcheyev는 inverse = true 맵핑으로 인해 문제가 아닌 것으로 표시했다. 이는 일방적 인 삭제가 작동하지 않도록하는 것으로 보이는데, 이는 나에게 inverse-mapping이 delete-orphan이 제대로 작동하지 않게하는 것을 의미한다. 이것으로 너무 자기 포함 된 것 같습니다. (올바른 형용사가 맞는지 확신 할 수 없음)

자식이 더 의존적이거나 잘하면 원 샷 삭제되도록하려면 가능한 경우 단방향 매핑을 부모로부터 시도하십시오.

+0

흥미 롭다. 나는 그것에 대해 생각해 본 적이 없다. 한 장면 삭제는 일대 다 (one-to-many) 단방향 (unidirectional) 연관성으로 만 작동 할 수도있다. 나는 그것을 시도하고 볼 것이다. –

+0

단방향 연결을 시도했는데 같은 결과가 나타납니다. 아마 그것은 2.12에서 제거되었습니다. 그것은 큰 문제가 아니며, 나는 단지 그것을 작동 시키려고했습니다. –

0

한방 삭제는 의도하지 않은 부작용을 가질 수 있으므로 NHibernate는 안전하다고 생각하고 그 콜렉션에서 삭제 된 자식 만 삭제합니다. 물론 hql을 사용하여 자신 만의 delete를 작성할 수 있습니다.

+0

사실, 나는 hql을 쓸 수 있었고, 왜 더 이상 작동하지 않을지 그리고 기능이 제거되었는지 궁금했습니다. –

관련 문제