Критерии NHibernate, выберите по количеству объектов - PullRequest
1 голос
/ 02 декабря 2009

Извините за загадочный заголовок ..

Не могли бы вы мне помочь, о том, как сделать выбор, основанный на подсчете свойства, с использованием Criteria? У меня есть объект (Pool) со свойством (PoolItems), и я хочу выбрать все пулы w. более 5 PoolItems.

1 Ответ

5 голосов
/ 03 декабря 2009

Попробуйте это:

DetachedCriteria dCriteria = DetachedCriteria.For<PoolItem>("pItem")
            .SetProjection(Projections.Count("Id"))
            .Add(Restrictions.EqProperty("pItem.PoolID", "pool.Id"));

IList<Post> posts = Session.CreateCriteria<Pool>("pool")
                .Add(Subqueries.Gt(5, dCriteria)).List<Pool>();

Предполагая, что таблица PoolItem имеет столбец PoolID в качестве внешнего ключа таблицы Pool. Отношения один-ко-многим. Если у вас нет свойства PoolID, сопоставленного в классе PoolItem, и у вас просто есть сопоставление объекта многие-к-одному с именем «Pool», то замените в отсоединенных критериях «pItem.PoolID» на «pItem.Pool.Id».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...