1
I have the following query in Mysql wanting to move to JPQL and I am doubtful in 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 screen result
The jpql query that 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());
}
get the error in stack :
Caused by: org.hibernate.hql.internal.Ast.Querysyntaxexception: Unexpected token: ( near line 1, column 99 [select new br.com.previsao.model.vo.Filter(a2.product , a2.Description, a2.quantityRecent, Soma) (select code sum(p.quantityRecent) as Soma from br.com.previsao.model.Product p Where p.gerenteFilial.chefe.codigo =:codigo ) as a1, (select P1.code Product production, P1.Description, P1.quantity_recent from br.com.previsao.model.Product P1 Where P1.gerenteFilial.chefe.codigo =:code ) as a2 Where a2.product = a1.code]
it seems that jpql does not accept subquerye
– user2509556