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.