HQL ou criteira

Pessoal boa Tarde!

seguinte estou iniciando com o hibernate, como posso fazer uma consulta com criteria ou hql
do seguinte trecho sql nativo

SELECT Count(idImagem) AS Total FROM Venda GROUP BY idImagem ORDER BY Total DESC LIMIT 3

esse sql eu testei e esta funcionando perfeitamente.

Agora não sei como aplicar ele no hibernate.

Lembrando que o idImagem é um bean dentro da classe venda.

Aguardo uma ajuda dos entendidos no assunto

abraço.

no HQL ele so nao reconhecerá o limit 3… mas voce pode reduzir os resultados pelo list que o hibernate devolverá…

você pode utilizar o setMaxResults(int x);

Usando Criteria ficaria mais ou menos assim…

List lista = criteria.setProjection( 
     Projections.projectionList()
    .add(Projections.countDistinct("idImagem") )
    .add(Projections.groupProperty("idImagem") )
).addOrder( Order.asc("Total") )
.setMaxResults(3).list();		

Rodrigo só uma pergunta de onde ele ta pegando esse “Total” - .addOrder( Order.asc(“Total”) ) ?

Acho que o correto seria você alterar a linha do countDistinct para…

Valeu é + - isso.

Mas o restante eu tento resolver por aqui.

Ta dando erro de cast, acontece o seguinte que com o alias “Total” na exiete na classe ele vem junto no objeto gerado no list, ai terei q ver como retirar apenas o que eu quero eliminando a posição do total o list vem assim:

[0]
[0] = ao total
[1] = objeto venda
[1]
[0] = ao total
[1] = objeto venda
[2]
[0] = ao total
[1] = objeto venda