Запрос критериев NHibernate - выберите различие с присоединенным объектом - PullRequest
2 голосов
/ 18 ноября 2009

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

criteria.SetProjection(Projections.Distinct(Projections.Property("Country")));

Как мне изменить его, чтобы присоединиться и получить объект Country, а не только идентификатор?

1 Ответ

2 голосов
/ 18 ноября 2009

Любой простой способ - использовать подзапрос. То есть во внешнем запросе можно выбрать всю страну, где идентификатор страны соответствует внутреннему запросу.

Subqueries.PropertyIn(
  "Country",
  innerDetachedCriteriaWhichFindsCountriesWithPeopleAndProjectsCountryId)
...