0
respostas

[Sugestão] Função de relatório de vendas não realiza... Solução é na Query ou no banco

Se alguém estiver tendo dificuldade no retorno da consulta na aula e aparece algo como

"ERROR: Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'loja.itens1_.quantidade' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
Exception in thread "main" javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not extract ResultSet"

Isso ocorre porque na base de dados Mysql por default esta configurado assim sql_mode=only_full_group_by, você pode desativar que não acho que seja uma boa mas pode fazer isso no codigo que tambem resolve

public List<Object[]> relatorioDeVendas(){

    String jpql = "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 SUM(item.quantidade) DESC";
    return connEm.createQuery(jpql, Object[].class).getResultList();