2013-06-03 1 views
2

오브젝트 A는 B 오브젝트의리스트를 가지고 있고 B는 C 오브젝트의리스트에 있다고 가정한다.집계 루트에있는 Hibernate와 Interceptor

NHibernate를 사용하여 C 인스턴스로 업데이트하면 A의 한 인스턴스 (및 어떤 인스턴스)에 연결된 "무언가"가 업데이트되었음을 ​​어떻게 알릴 수 있습니까?

요격기를 사용하면 C가 업데이트되었음을 ​​알지만 자동으로 C -> B -> A를 따르는 방법 (C는 B를 알지 못하고 C는 항상 루트를 집계하지 않습니다).

답변

0

매핑의 세부 사항에 따라 C 엔티티가 수정 될 때마다 항상 연결된 B 엔티티를 검색 할 수 있습니다. B이 외래 키 관계로 C과 관련이 있다고 가정하면 엔터티 기본 키와 같은 외래 키가있는 B (또는 하나만 B)을 모두 검색 할 수 있습니다.

동시에 B에 대해 알 수없는 경우 A에 대해 알지 못하는 경우 비슷한 절차를 사용하여 A의 인스턴스가 관련되었음을 알릴 수 있습니다. 또는 BA에 대한 링크가있는 경우 해당 관계를 대신 사용할 수 있습니다.

특정 구현은 이러한 엔티티를 얼마나 정확히 매핑했는지에 따라 달라집니다.

+0

NH 인터셉터를 만들려고하고 업데이트 된 엔티티의 유형이 'C'일 때 쿼리를 실행하거나 관계를 탐색하여 'B'다음에 'A'를 찾으십니까? – PascalT

+0

'C'에서 'B'로 또는 'B'에서 'A'로 설정된 관계가 없으면 '예'입니다. – rae1