NHibernate many 2 many запрос, возвращающий все данные одной стороны и ее дочерних элементов

#c# #nhibernate

#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>();
    }
  

Это работает нормально, я получаю семейство по одному из родительских идентификаторов другой стороны. Проблема в том, что этот запрос загружает только одного родителя. Мне нужно, чтобы это вернуло всех родителей семейства.

Мне нужно использовать какой-то тип подзапроса для этого, верно?

Комментарии:

1. Итак, эта новая функция, которая возвращала бы список родителей, принимала бы ParentID?

2. Это вернет список семейства

Ответ №1:

 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)
  

Я думаю, что это загрузит всех родителей