2011-05-02 33 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) 

我认为这将加载所有的家长