query model.vo a solution with jpql and subqueryes

1

I have the following query in MySQL wanting to pass to JPQL and I am doubtful in the syntax:

SELECT a2.produto , 
       a2.descricao, 
       a2.quantidade_recente, 
       Soma 
  from (SELECT p.codigoProduto, 
               sum(p.quantidade_recente) as Soma 
          from previsaovendas.produto  as p, 
               previsaovendas.usuario u 
         where u.codigo = p.codigo_filial 
           and u.codigo_chefe = 3 
         group by p.codigoProduto) as a1,
      (SELECT p1.codigoProduto as produto, 
              p1.descricao, 
              p1.quantidade_recente 
         from previsaovendas.produto as p1,  
              previsaovendas.usuario u
        where u.codigo = p1.codigo_filial 
          and u.codigo_chefe = 3 ) as a2
 where a2.produto = a1.codigoProduto;

See the on-screen result

The query in jpql which is:

String jpql1 = "select new br.com.previsao.model.vo.Filtro(a2.produto , a2.descricao, a2.quantidadeRecente, Soma)"
        + " (select p.codigoProduto, sum(p.quantidadeRecente) aS Soma  from Produto p where p.gerenteFilial.chefe.codigo =:codigo ) as a1,"
        + " (select p1.codigoProduto aS produto, p1.descricao, p1.quantidade_recente from Produto p1 where p1.gerenteFilial.chefe.codigo =:codigo ) as a2"
        + " where a2.produto = a1.codigoProduto";


 // metodo buscarPorPaginacao
 TypedQuery<Filtro> query = manager.createQuery(jpql1, Filtro.class);   
 query.setParameter("codigo", 3L);

 List<Filtro> resultado = query.getResultList(); 

 for (Filtro prod : resultado) {
      System.out.println(" Impressão Filtro da Empresa: ");
      System.out.println(" Nome : " + prod.getCodigoProduto() +  " Filtro " + prod.getDescricao()+  " Quantidade " + prod.getQuantidade()+ " Total " + prod.getTotal());

 }

I get the error in the stack:

  

Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException:   unexpected token: (near line 1, column 99 [select new   br.previsao.model.vo.filter (a2.product, a2.description,   a2.quantityRecente, Sum (select p.Product code,   sum (p.Recent amount) to S Sum from br.pregnancy.model.Product p   where p.gerent.File.Code.code =: code) as a1, (select   p1.codigoProducto product, p1.description, p1.quantity_recente from   br.previsao.model.Product p1 where p1.perienteFilial.chefe.codigo   =: code) as a2 where a2.product = a1.codigoProducto]

    
asked by anonymous 30.06.2017 / 19:58

1 answer

0

The query is incorrect, a comma was missing at the point where the error occurred:

a2.descricao, a2.quantidadeRecente, Soma), (select p.
                                         ^

JPQL in Hibernate accepts subqueries in SELECT , WHERE and HAVING . Therefore, as long as the logic of your query is correct, it is to work.

    
21.12.2018 / 14:02