В HQL, не могли бы вы попробовать:
select band.name, max(vote.totalVotes)
from Band band
join band.votes vote
group by band.name
order by max(vote.totalVotes) desc
Предполагается, что существует связь один-ко-многим между Band
и Votes
(на самом деле, предоставление объектной модели очень полезно при работе с HQL и / или Criteria API, поскольку вы запрашиваете объектную модель) .
На всякий случай, вот соответствующий раздел документации:
Запрос, который возвращает агрегированные значения
может быть сгруппирован по любому свойству
возвращаемый класс или компоненты:
select cat.color, sum(cat.weight), count(cat)
from Cat cat
group by cat.color
select foo.id, avg(name), max(name)
from Foo foo join foo.names name
group by foo.id
Допускается также наличие пункта.
select cat.color, sum(cat.weight), count(cat)
from Cat cat
group by cat.color
having cat.color in (eg.Color.TABBY, eg.Color.BLACK)
Функции SQL и агрегатные функции
разрешены в порядке и порядке
пункты, если они поддерживаются
базовая база данных (т.е. не в
MySQL).
select cat
from Cat cat
join cat.kittens kitten
group by cat.id, cat.name, cat.other, cat.properties
having avg(kitten.weight) > 100
order by count(kitten) asc, sum(kitten.weight) desc
Ни по группам, ни по
порядок по предложению может содержать арифметику
выражения. Hibernate также не
в настоящее время разверните сгруппированный объект, так
Вы не можете написать группу по кошке, если все
свойства кота неагрегированы.
Вы должны перечислить все неагрегированные
свойства явно.