2010-05-05 3 views
0

У меня есть родительский объект, который имеет список детей:NHibernate FetchMode

class Parent {Id, Name, IList<Child> children} 
class Child {Id, Name} 

Мне нужно, чтобы выбрать все родители, где Eсть условие для своих детей, но я не хочу, чтобы получить повторяющиеся строки (Дон» т хотят, чтобы дети детали появятся в списке выбора)

Вот код:

session.CreateCriteria(typeof(Parent)) 
.SetFetchMode("children", FetchMode.Select); 
.CreateCriteria("children").Add(Subqueries.PropertyIn("Id", {1,2,3,4})) 
.List<Parent>(); 

запрос добавляет все proprties класса ребенка, чтобы выбрать список, который приводит к дублированию родителей.

Есть ли способ выбрать всех родителей, не имеющих дочерних деталей в списке выбора?

Благодаря

ответ

0

Одно из возможных решений:

session.CreateCriteria<Parent>() 
     .CreateCriteria("children") 
     .Add(Subqueries.PropertyIn("Id", {1,2,3,4})) 
     .SetResultTransformer(Transformers.DistinctRootEntity) 
     .List<Parent>(); 
Смежные вопросы