У меня есть HQL-запрос, который прекрасно работает:
select m
from Media m
join m.Productlines p
join m.Categories c
join m.Spaces sp
join m.Solutions so
where m.Uid != 0
and p.Uid in (:productlines)
and c.Uid in (13)
and sp.Uid in (52)
and so.Uid in (15,18)
group by m.Uid
Но теперь его нужно параметризовать / сделать динамическим, не только параметры, но и объединения (можно выбирать только из мультимедиа, без каких-либо объединений, поэтому в этом случае не потребуется * .Uid in) ).
Я не хочу возиться с экземпляром StringBuilder и строить запрос hql таким образом, я бы предпочел использовать Criteria API, но я не могу получить
SELECT m.*
....
GROUP BY m.Uid
запрос для работы с критериями.
Если я добавлю
Projections.GroupProperty("Uid")
на мой запрос nhibernate выбирает
SELECT m.Uid
....
GROUP BY m.Uid
что, конечно, неправильно.
После этого мне также нужно подсчитать уникальных строк, возвращаемых запросом, как результат разбитого на страницы.
Итак, мой другой запрос довольно похож, но я не могу найти критерий, эквивалентный
SELECT COUNT(DISTINCT m.Uid)
Вот HQL:
select count(distinct m.Uid)
from Media m
join m.Productlines p
join m.Categories c
join m.Spaces sp
join m.Solutions so
where m.Uid != 0
and p.Uid in (:productlines)
and c.Uid in (13)
and sp.Uid in (52)
and so.Uid in (15,18)
Как это можно сделать с помощью Criteria API?
Пожалуйста, (N) эксперты Hibernate - помогите мне, я не могу найти работающее решение. Любая помощь с благодарностью!