내가 가진 부모/자식 관계, 그리고 아이가있는 복합 IDNHibernate에 - 문제가 병합 컬렉션
부모
<id name="Id" type="Int32">
<generator class="identity" />
</id>
<set name="Children" table="CTable" cascade="all-delete-orphan" inverse="true" lazy="false" >
<key column="ParentId"/>
<one-to-many class="ChildrenClass"/>
</set>
아이
<composite-id unsaved-value="none">
<key-property name="ParentId"/>
<key-property name="ChildId"/>
</composite-id>
내가 원하는 무엇과 : 1) 취득 부모 DB에서 세션을 닫고 서비스의 부모를 클라이언트에게 전달합니다. 2) 부모가 클라이언트에서 돌아 왔을 때 DB에 모든 자식을 저장합니다. 새 세션
2 단계에서 을 호출합니다. var merged = Session.Merge (product);
나는 NHibernc가 자식 컬렉션에서 추가/삭제 된 요소를 처리하도록 만드는 유일한 방법 인 것처럼 Merge()를 사용합니다. 그러나 새로 추가 된 자식의 모든 ID-s를 nHibernate로 재설정 했으므로 ParentId == 0 그리고 ChildId == 0. 그래서 질문은 - NHibernate가 Merge()에서 전달되는 엔티티로부터 ID를 유지하도록 어떻게 말하는가? .. 도와주세요.
답장을 보내 주셔서 감사합니다. 부모에 대한 하위 참조를 추가하면 어떻게 부모에서 자식 컬렉션을 유지할 수 있습니까? Parent.Children 및 Child.Parent 참조가 모두있을 경우 StackOverflowException (분명히)으로 연결됩니다. 부모를 모아 놓은 자식 컬렉션을 가지고 있으므로 탐색 할 수 있습니다. 가능한가요? – Dmitry
"분명히"? 당신은 잘못. 양방향 관계는 Hibernate에 의해 완전히 지원된다. 먼저 문서를 읽는 것이 좋습니다. –
디에고, 내가 그럭저럭 일할 수 있었다, 그것이 처음에 왜 안했는지 모른다. 감사! – Dmitry