In HQL, could you give this a try:
select band.name, max(vote.totalVotes)
from Band band
     join band.votes vote
group by band.name
order by max(vote.totalVotes) desc
This assumes there is a one-to-many association between Band and Votes (actually, providing the object model is very helpful when working with HQL and/or the Criteria API since you are querying the object model).
Just in case, here is the relevant section of the documentation:
  
  
  A query that returns aggregate values
  can be grouped by any property of a
  returned class or components:
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
  
  A having clause is also allowed.
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 functions and aggregate functions
  are allowed in the having and order by
  clauses if they are supported by the
  underlying database (i.e., not in
  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
  
  Neither the group by clause nor the
  order by clause can contain arithmetic
  expressions. Hibernate also does not
  currently expand a grouped entity, so
  you cannot write group by cat if all
  properties of cat are non-aggregated.
  You have to list all non-aggregated
  properties explicitly.