Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Retorno da query com new

Boa Noite, estou fiz o método para retornar o relatório de vendas mas porem existe mais de dois nomes de produtos para o relatório, mas ele retorna somente dois registros.

esse é meu código:

    public List<RelatorioVendasVo> relatorioVendas(){
        String jpql = "select new vo.RelatorioVendasVo(" +
                " produto.nome, " +
                " sum(item.quantidade), " +
                " max(pedido.data)) " +
                " from Pedido pedido" +
                " join pedido.itens item" +
                " join item.produto produto" +
                " group by item.quantidade" +
                " order by produto.nome";
        return em.createQuery(jpql, RelatorioVendasVo.class).getResultList();
    }

e essa e a estrutura do banco

tebela item_pedido

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

tabela produtos

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

2 respostas

Qual está sendo retorno? Poder ser que esteja ocorrendo isso porque ele esteja agrupando os produtos pelo nome entao ele acaba agrupando produtos de diferentes registros por estarem com o mesmo nome tenta mudar os nomes dos produtos ou o select para agrupar pelo id assim:

   public List<RelatorioVendasVo> relatorioVendas(){
        String jpql = "select new vo.RelatorioVendasVo(" +
                " produto.id, " +
                " produto.nome, " +
                " sum(item.quantidade), " +
                " max(pedido.data)) " +
                " from Pedido pedido" +
                " join pedido.itens item" +
                " join item.produto produto" +
                " group by item.quantidade" +
                " order by produto.nome";
        return em.createQuery(jpql, RelatorioVendasVo.class).getResultList();
    }
solução!

Analisei o código melhor e vi que eu estava tentando agrupar a quantidade, e em relação a quantidade realmente tinha somente dois valores possíveis, logo retornava somente dois valores, corrigi para agrupar pelo nome e apareceu os quatro possíveis valores