2011-07-22 13 views
0

nhibernateでQueryOverを使用して親コレクションから子を選択しようとしています。 これは私がHQLでやろうとしていますものです:nhibernateからTSubTypeを返すQueryOver

SELECT as_kitten FROM Cat as_Cat 
JOIN as_Cat.Kittens as_kitten 

これはどのようにQueryOverに変換さんかさえJoinAliasを使用していますか?

IList<Kitten> kittens = session.QueryOver<Cat>() 
     .JoinQueryOver<Kitten>(c => c.Kittens) 
     .Select(??) 
     .List() 

私がこれまでに見つけることができる最も近いものは、これが一方通行の関係、すなわちであると仮定すると、NHibernate QueryOver

乾杯

EDIT です。子猫は猫のことを知りません

+0

は猫と子猫(またはあなたの場合)との間に一対多の関係がありますか? –

+0

ええ、1対多の関係があります。この例をhttp://nhforge.org/blogs/nhibernate/archive/2009/12/17/queryover-in-nh-3-0.aspx – masdude

答えて

0

あなたの例はかなり些細なようです。あなたが既に親を持っていて、あなたのcatエンティティの中に1対多のものとしてマッピングされているコレクションを持っているなら、あなたがレイジーロードであればコレクションにアクセスするだけです。

あなただけがあっても容易に参加必要とすることなく、このような何かを行うことができ、親のIDがある場合:

IList<Kitten> kittens = session.QueryOver<Kitten>() 
     .Where(k => k.CatId == <parent cat id here>) 
     .List<Kitten>() 
+1

から取り出してください。私はその関係を双方向にしなければなりませんでしたが、実際のドメインモデルは関係が1つしかありません。一方的なモデルでこれを行う方法はありますか? (私は、私の質問には片方の関係を言っていたはずです、それについては残念です)。これを行う方法がないなら、私はこれを答えます。 – masdude