Как можно использовать HQL для выбора конкретных объектов, соответствующих определенным критериям?
Мы попробовали следующее, чтобы сгенерировать список из десяти лучших подписанных RSS-каналов (где SubscriptionCount является производным свойством):
var topTen = UoW.Session.CreateQuery( @"SELECT distinct rss
FROM RssFeedSubscription rss
group by rss.FeedUrl
order by rss.SubscriptionCount DESC
")
.SetMaxResults(10)
.List<RssFeedSubscription>();
В тех случаях, когда намерение состоит только в том, чтобы выбрать два уникальных URL-адреса фида в базе данных, а не десять строк в базе данных, созданных в виде объектов. Результат вышеупомянутого:
Column 'RssSubscriptions.Id' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
ORDER BY items must appear in the select list if SELECT DISTINCT is specified.
Можно просто прореживать результаты, чтобы мы убрали два уникальных URL-адреса фида после получения данных из базы данных, но должен быть способ сделать это на уровне БД с использованием HQL?
РЕДАКТИРОВАТЬ: Мы понимаем, что можно сделать скалярный запрос, а затем вручную извлекать значения, но нет ли способа просто указать критерии соответствия для откатанных объектов?