0

나는 다음과 같다 객체 그래프를 가지고, 어디멀티 테이블 NHibernate에 쿼리

이 유형의 목록을 반환 쿼리를 작성 현명한 방법이 될 것입니다 무엇

class A() { int id; IEnumerable<B> bees; } class B() { int id; A a; C c; } class C() { int id; D d; IEnumerable<B> bees; } class D() { int id; IEnumerable<C> cees } 

그들은 특정 이드와 체인을 아래로 포함하고 있습니까?

NH3을 사용 중이므로 쿼리 기술을 사용할 수 있습니다. 나는 두 가지 접근법을 시도했지만 각각의 경우에 막 다른 길을 밟았습니다. 나는 메모리 컬렉션에서 작업하는 솔루션을 가지고있다. 그러나 분명히 이상적이지는 않다. 나는 DB 서버에서 작업을하고 싶다. 무관 연결하는 모든 연관 양방향 연결이 가정되지 않고

답변

3
select distinct a from A a 
inner join a.bees b 
inner join b.c c 
where c.d.id = :theSearchDId 

(즉 A.bees는 B.a의 역 관계 등이다).

+0

와우는 간단했습니다. 혼란 스러웠던 길을 내가 어떻게 가는지 알지 못했다. 그 (것)들을 연결하는 b의 수 (또는 c의 수 - 동일한 수)를 돌려 보내는 간단한 방법이 있는지 당신은 알지 않을 것입니다? – UpTheCreek

+0

전역 번호를 의미하는 경우 A 내부 조인에서 select count (distinct b.id)를 사용하십시오. b. 내부 조인 b.c c 여기서 c.d.id = : theSearchDId. a에 대한 b의 수를 의미한다면 select a.id를 사용하십시오. a에서 A (내외부 b.id)를 계산하십시오. 내부 결합 a.bees b 내부 결합 bc c cdid = : theSearchDId 그룹 by aid –

+0

brilliant - 감사 – UpTheCreek