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]