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.
Top 10 com Hibernate
8 Respostas
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
O que vc está utilizando para executar a query? Criteria?
se for criteria pode utilizar setFirstResult e setMaxResult
abs
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
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.
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
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.
agrupe pelo produto, somando a quantidade ordenando desc setando maxresult e pronto!
como funciona ? teria 1 exemplo pratico pra me dar ?? … pq sei que precisarei aqui no futuro e é bom estar preparado… ^^