NHibernate有很多2个查询,返回所有的一方及其子

时间:2011-05-02 15:08:59

标签: c# nhibernate

家庭和父母是m:m的关系。

现在我有这个问题:

    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给我一个家庭。问题是此查询仅加载单个父级。我需要它来归还所有家庭的父母。

我需要使用某种类型的子查询吗?

1 个答案:

答案 0 :(得分: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)

我认为这将加载所有父母