JPQL query help

1

I am trying to return a group query along with the product entity returning all the data from the product table and the sum of the quantity. I get an error that is as follows:

Exception in thread "main" java.lang.IllegalArgumentException: Type specified for TypedQuery [br.com.previsao.model.Produto] is incompatible with query return type [class java.lang.Long]
at org.hibernate.jpa.spi.AbstractEntityManagerImpl.resultClassChecking(AbstractEntityManagerImpl.java:387)
at org.hibernate.jpa.spi.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:344)
at Teste.main(Teste.java:30)

The query code is as follows:

        String jpql1 = "select p, sum(p.quantidadeRecente) from Produto p where p.gerenteFilial.chefe.codigo =:codigo";

        //

        // metodo buscarPorPaginacao
        TypedQuery<Produto> query = manager.createQuery(jpql1, Produto.class);
        query.setParameter("codigo", 3L);
        List<Produto> produtos = query.getResultList();
        for (Produto prod : produtos) {
            System.out.println(" Impressão Produto da Empresa: ");
            System.out.println(" Nome : " + prod.getDescricao() + "Valor" + prod.getValor() +"Gerente" +prod.getGerenteFilial().getChefe().getCodigo()
                    + "Quantidade" + prod.getQuantidadeRecente()+ "Filial" + prod.getGerenteFilial().getNome());

        }
    
asked by anonymous 27.06.2017 / 18:46

1 answer

0

Just remove , sum(p.quantidadeRecente) from your JPQL.

The sum of the recent quantity of products can be computed as follows:

long quantidadesRecentes = produtos.stream().mapToLong(Produto::getQuantidadeRecente).sum();

In Java 7:

long quantidadesRecentes = 0L;
for (Produto p : produtos) {
    quantidadesRecentes += p.getQuantidadeRecente();
}
    
27.06.2017 / 19:04