2011-07-22 41 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

乾杯

編輯 假設這是一個單向關係,即。小貓不知道貓

+0

有貓和小貓(或你的情況)之間的一對多的關係? –

+0

是的,有一對多的關係。採取從http://nhforge.org/blogs/nhibernate/archive/2009/12/17/queryover-in-nh-3-0.aspx – masdude

回答

0

你的例子似乎相當微不足道。如果你已經擁有了父對象,並且在你的貓實體中映射了一對多的集合,那麼如果你是懶惰加載的話,你所要做的就是訪問這個集合。

如果你只有父母,你可以很容易地做這樣的事情,甚至無需聯接的ID:

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

這個例子,這是我目前的。我必須使雙向關係成爲可能,但真正的領域模型只有一種關係。有沒有辦法做到這一點的單向模型? (我應該在我的問題中說一種方式的關係,對此感到抱歉)。如果沒有辦法做到這一點,我會將其作爲答案。 – masdude