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

Adicionando um novo item no segundo pedido

Quanto eu adiciono um novo item no segundo pedido que já existe no primeiro pedido ele está apresentando um erro.

Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Column "ITEMPEDIDO1_.QUANTIDADE" must be in the GROUP BY list; SQL statement:
select produto2_.nome as col_0_0_, sum(itempedido1_.quantidade) as col_1_0_, max(pedido0_.data) as col_2_0_ from pedidos pedido0_ inner join itens_pedidos itempedido1_ on pedido0_.id=itempedido1_.pedido_id inner join produtos produto2_ on itempedido1_.produto_id=produto2_.id group by produto2_.nome order by itempedido1_.quantidade DESC [90016-200]
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:576)

Acredito que a query que está sendo executada esteja com problema.

4 respostas

Oi Bruno,

Posta aqui como está o código do seu método relatorioDeVendas da classe PedidoDao.

Olá,

Tentei reproduzir seu problema por aqui: O erro diz que voce tem que colocar "ITEMPEDIDO1_.QUANTIDADE" no GROUP BY Mais ai fica estranho agrupar por quantidade e imagino que não queira realmente isso.

SELECT produto.nome, SUM( item.quantidade), MAX(pedido.data) FROM Pedido pedido JOIN pedido.itens item JOIN item.produto produto GROUP BY produto.nome ORDER BY item.quantidade DESC

Boa noite, Também estou com o mesmo problema, e por algum motivo testei mudar o banco de dados para mysql, e funcionou certinho. Vou continuar tentando resolver o problema para o h2, qualquer novidade volto aqui no tópico.

solução!

Olá novamente,

Aqui comigo funcionou substituindo ORDER BY item.quantidade DESC por ORDER BY SUM(item.quantidade) DESC na query de relatorioDeVendas():

public List<RelatorioDeVendasVo> relatorioDeVendas(){
        String jpql = "SELECT new br.com.emendes.vo.RelatorioDeVendasVo("
                + "produto.nome, "
                + "SUM(item.quantidade), "
                + "MAX(pedido.data)) "
                + "FROM Pedido pedido "
                + "JOIN pedido.itens item "
                + "JOIN item.produto produto "
                + "GROUP BY produto.nome "
                + "ORDER BY SUM(item.quantidade) DESC";
        return em.createQuery(jpql, RelatorioDeVendasVo.class)
                .getResultList();
    }

Mais informações sobre h2 erro 90016