일반적으로 Child 개체 (대다수의 경우) 컬렉션을 포함하는 Parent를 저장하는 가장 좋은 방법은 궁금하지만 부모의 컬렉션은 현재 로드되지 않았기 때문에 null입니까?부모 개체를 저장하는 가장 좋은 방법
필자의 경우 부모는 웹 페이지에서 내 서비스 계층으로 전달됩니다. 웹 페이지는 양식의 상위 특성 만 채 웁니다.
데이터베이스의 부모에 연결된 여러 자식 개체가 있지만 'children'속성이 현재 null임을 알고 있습니다.
부모님을 저장하면 부모님을 저장하면 자녀들이 cascade = "none"으로 설정되어 있어도 모든 링크가 삭제됩니다. 삭제 기록은 로그에서 Hibernate 문제를 볼 수 있습니다.
나는이 해결하기 위해 여러 가지 방법을 생각할 수:)
1을 별도로 아이를로드 한 다음에 부모의 자식 수집을 설정 한 다음 부모 (작품을 저장하지만,이 데이터베이스에 추가 여행입니다) .
2) HQL 또는 Native SQL을 사용하는 간단한 속성에 대해서만 업데이트를 실행하십시오.
업데이트 : 캐스케이드 동작이 실제로 제대로 작동하는지 잘 모르겠습니다. 워드 프로세서에서, 그것은 NHibernate에이 폭포가 업데이트를 저장 내 컬렉션 엉망을 설정하지 않는 한 제안 등 모든 고아 삭제하지만이 (Order.hbm.xml에서) 내 매핑
입니다<bag name="OrderItems" table="order_item" cascade="none" lazy="true">
<key column ="order_id" />
<many-to-many class="MenuItem" column="item_id"/>
</bag>
Order.OrderItems가 null이고 SaveOrUpdate (Order)를 사용하여 Order 개체를 저장할 때 컬렉션을 확실히 삭제합니다. 나는 그들이 보존되기를 바란다. 구성이 잘못 되었나요?
감사
답장을 보내 주셔서 감사합니다. 솔직히 말해서 나는 생각할 도메인 객체의 집합을 하나만 가지기를 원했지만 고려해 보았습니다. 필자는 DTO 유지 관리가 유지해야 할 악몽이 된 대규모 프로젝트 (Java)에서 작업했습니다 (엔티티와 동기화 상태 유지). 현재, 나는 그 문제에 대해서 신경 쓰는 객체 만 건드리는 HQL update 'query'를 사용하여 문제를 해결했다. 그것은 내가 뭘 원하는지 NHibernate에 깃발이 있어야한다고 확신하지만 여전히 아주 청초하다. 다시 한 번 감사드립니다. – Richard
DTO를 어디에서나 사용하는 것은 필수적이지는 않지만, 가장 이해하기 쉬운 부분입니다. –