2010-12-27 4 views
0

모든 개체가 새로운 개체 개체 컬렉션으로 부모 개체를 저장 (삽입)하려고합니다. 나는 수동으로 \ 업데이트를 저장하도록 지정하고 언제 캐스케이드를 매핑에 사용하지 않고 직접 세션을 플러시하는 것을 선호합니다. ,Hibernate 부모 - 자식 저장 중복 된 SQL 업데이트를 실행했습니다

INSERT INTO PARENT.... 
INSERT INTO CHILD .... 
UPDATE CHILD SET [email protected] WHERE [email protected] //What the point of update if ParentId was set in previous query 

이 업데이트 문이 절대적으로 필요하다 :

session.Save(Parent) 
foreach (var child in Parent.Childs) 
{ 
session.Save(child); 
} 
session.Flush() 

이 코드는 부모 행을 삽입 할 것으로 예상, 각 자식 행, 그러나 NHibernate에이 SQL을 실행 : 그러니까 기본적으로 내가 좋아하는이 개체 그래프를 저장 ParentId가 이미 INSERT에 올바르게 설정되었습니다. 어떻게 제거합니까? 성능은 나를 위해 매우 중요합니다.

+1

이것을 확인하면 도움이 될 수 있습니다. http://stackoverflow.com/questions/4315791/nhibernate-sets-foreign-key-in-secondary-update-rather-than-on-initial-insert-vio –

+0

매핑? –

+0

@Jani : 정말로 도움이되었습니다. 감사합니다. –

답변

0

many-to-one 컬렉션의 매핑에서 "Inverse"를 깜박입니다.

관련 문제