Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Column "ITENS1_.QUANTIDADE" must be in the GROUP BY list; SQL statement:

Olá..

Estou tentando executar a função relatorioVendas() em PedidoDao.java porém sem sucesso.

Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Column "ITENS1_.QUANTIDADE" must be in the GROUP BY list; SQL statement:
select produto2_.nome as col_0_0_, sum(itens1_.quantidade) as col_1_0_, max(pedido0_.dataCadastro) as col_2_0_ from Pedido pedido0_ inner join ItemPedido itens1_ on pedido0_.id=itens1_.pedido_id inner join produtos produto2_ on itens1_.produto_id=produto2_.id group by produto2_.nome order by itens1_.quantidade DESC [90016-200]
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:576)
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:429)
    at org.h2.message.DbException.get(DbException.java:205)
    at org.h2.message.DbException.get(DbException.java:181)
    at org.h2.expression.ExpressionColumn.updateAggregate(ExpressionColumn.java:182)
    at org.h2.command.dml.Select.updateAgg(Select.java:545)
    at org.h2.command.dml.Select.gatherGroup(Select.java:525)
    at org.h2.command.dml.Select.queryGroup(Select.java:487)
    at org.h2.command.dml.Select.queryWithoutCache(Select.java:839)
    at org.h2.command.dml.Query.queryWithoutCacheLazyCheck(Query.java:201)
    at org.h2.command.dml.Query.query(Query.java:489)
    at org.h2.command.dml.Query.query(Query.java:451)
    at org.h2.command.CommandContainer.query(CommandContainer.java:285)
    at org.h2.command.Command.executeQuery(Command.java:195)
    at org.h2.jdbc.JdbcPreparedStatement.executeQuery(JdbcPreparedStatement.java:114)
    at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:57)
    ... 18 more
    public List<Object[]> relatorioVendas() {
        String jpql = "SELECT produto.nome,"
                + "SUM(item.quantidade),"
                + "MAX(pedido.dataCadastro) "
                + "FROM Pedido pedido "
                + "JOIN pedido.itens item "
                + "JOIN item.produto produto "
                + "GROUP BY produto.nome "
                + "ORDER BY item.quantidade DESC";
        return em.createQuery(jpql, Object[].class)
                .getResultList();

Esse erro ocorre pois tenho 2 pedidos cadastrados (com o mesmo produto), se existisse apenas 1 produto com um determinado item não retorna o erro. Exatamente como na aula do professor.

1 resposta
solução!

Resolvido.

  public List<Object[]> relatorioVendas() {
        String jpql = "SELECT produto.nome,"
                + "SUM(item.quantidade) as qtd,"
                + "MAX(pedido.dataCadastro) "
                + "FROM Pedido pedido "
                + "JOIN pedido.itens item "
                + "JOIN item.produto produto "
                + "GROUP BY produto.nome "
                + "ORDER BY qtd DESC";
        return em.createQuery(jpql, Object[].class)
                .getResultList();