Top 10 com Hibernate

8 respostas
S

Eu até sei como poderia ser feito em SQL, porém com Hibernate não tenho idéia, tenho uma entidade vendas que possui uma lista de músicas dentro dela, que são as músicas vendidas. Queria pegar as 10 músicas mais vendidas. Esse exercício é o mesmo da Caelum do FJ-28.

8 Respostas

S

Acho que a query seria mais ou menos essa:

select musica.codigo,count(musica.codigo) from vendas_musica inner join musica on musica.codigo = vendas_musicas.musicas_codigo group by musicas.codigo

jcmird

O que vc está utilizando para executar a query? Criteria?

se for criteria pode utilizar setFirstResult e setMaxResult

abs

Lavieri

eu fiquei meio intrigado com esse problema… essa parte do setFirst e Max não resolve tudo…

falta a parte em que ele tem que fazer um SUM da coluna “quantidade” … pelo que entendi pelomenos

jcmird

Nao precisa fazer o sum, eu faria da seguinte forma. Ele precisa dos top 10 ou seja os mais vendidos, só ele fazer o order by desc pela quantidade e pegar os 10 primeiros, se for pelo o que entendi resolve.

Lavieri

não é assim…

normalmente o rigstro de vendas é assim
produto - quantidade
papel -> 15
bolo -> 7
coxinha -> 3
papel -> 8
coxinha -> 12
coxinha ->3

ou seja… é um registro de saida de venda… one 1 produto é vendido varias vezes… e ordenar por quantidade não vai trazer a resposta que ele ker… a não ser q ele some os resultados

jcmird

Entendi … Ele até faz o sum utilizando o criteria com projectionList … mas o problema ficaria na ordenação … Neste caso tenho 2 opções utilizaria criteria o projection e criteria e ordenaria o 10 primeiros no proprio retorno de um array ou nas piores situaçoes utiliza query native.

arthurminarini

agrupe pelo produto, somando a quantidade ordenando desc setando maxresult e pronto!

Lavieri

como funciona ? teria 1 exemplo pratico pra me dar ?? … pq sei que precisarei aqui no futuro e é bom estar preparado… ^^

Criado 24 de março de 2009
Ultima resposta 25 de mar. de 2009
Respostas 8
Participantes 4