Professor Boa Tarde,
Tentei incluir um mesmo produto para um outro pedido e a consulta agregada não funciona.
Segue abaixo os códigos.
Consulta
public ListrelatorioDeVendas(){
String jpql = "SELECT new br.com.alura.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 item.quantidade DESC";
return em.createQuery(jpql, RelatorioDeVendasVo.class).getResultList();
}
Teste
public static void main(String[] args) {
popularBancodeDados();
EntityManager entityManager = JPAUtil.getEntityManager();
ProdutoDao produtoDao = new ProdutoDao(entityManager);
Produto produto1 = produtoDao.buscarPodId(1L);
Produto produto2 = produtoDao.buscarPodId(2L);
entityManager.getTransaction().begin();
ClienteDao clienteDao = new ClienteDao(entityManager);
Cliente cliente = clienteDao.buscarPorId(1L);
Pedido pedido = new Pedido(cliente);
Pedido pedido2 = new Pedido(cliente);
pedido.adicionarItem(new ItemPedido(produto1, 2, pedido));
pedido2.adicionarItem(new ItemPedido(produto1, 1, pedido2));
pedido2.adicionarItem(new ItemPedido(produto2, 2, pedido2));
PedidoDao pedidoDao = new PedidoDao(entityManager);
pedidoDao.cadastrar(pedido);
pedidoDao.cadastrar(pedido2);
entityManager.getTransaction().commit();
List<RelatorioDeVendasVo> relatorioDeVendas = pedidoDao.relatorioDeVendas();
}
ERRO:
Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Column "ITENS1_.QUANTIDADE" must be in the GROUP BY list; SQL statement:
OBS: As outras classes estão do mesmo jeito do projeto do curso.
O problema acontece quando cadastro um mesmo produto para pedidos diferentes.