lico
Novembro 11, 2008, 10:57am
#1
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á…
foxpv
Novembro 11, 2008, 12:28pm
#3
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();
lico
Novembro 12, 2008, 12:55pm
#5
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…
lico
Novembro 12, 2008, 2:12pm
#7
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