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 
} 

を彼らは特定のIDと鎖のDを含む?

私は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.bees b内部結合b.c cからselect count(distinct b.id)を使用します。ここで、c.d.id =:theSearchDId。 aの数を意味する場合は、select a.id、count(distinct b.id)をA a内部結合a.bees b inner join bc c cdid =:theSearchDId group by a.id –

+0

brilliant - ありがとう – UpTheCreek