2011-05-02 65 views
1

家庭和家長是m:m的關係。NHibernate許多2多個查詢,返回所有的一方和它的孩子

現在我有這個疑問:

public Family GetFamilyByParentId(long parentId) 
    { 
     queryString = @"select f 
         from Family f 
         join fetch f.Parents p 
         join fetch p.Person per 
         where p.Id = :id"; 

     return Session.CreateQuery(queryString) 
        .SetInt64("id", parentId) 
        .UniqueResult<Family>(); 
    } 

這工作得很好,讓我的家庭被對方的parentIds之一。問題是這個查詢只加載一個父代。我需要它來歸還所有家庭的父母。

我需要爲這個權利使用某種類型的子查詢?

+0

的所以這將返回父母的名單新功能將採取parentId的? – 2011-05-02 15:28:08

+0

它會返回一個家庭列表 – jfar 2011-05-02 17:29:45

回答

2
select f 
from Family f 
join fetch f.Parents p 
join fetch p.Person per 
where f.Id IN (select sub.Id 
      from Family sub join sub.Parents subP join subP.Person subPer 
      where subPer.Id = :id) 

我認爲這將加載所有的家長