Converter SQL para JPQL

Estou precisando de ajuda para converter a instrução SQL abaixo para JPQL.

 select 
        DATE(pedido.`dt_pedido` ) AS barChartLabels ,
        COUNT(pedido.id) AS qtdPedido,
        SUM(itens.total * pedido.`taxa_compra`) as percentualCompra,
        SUM(pedido.`taxa_bairro`) AS valorEntrega,
        SUM(itens.total) as custoProdutos

from `pedido` 

inner join ( select `pedido_id` as pedido_id, SUM(item.`quantidade` * item.preco) as total
from `item_pedido` item group by item.`pedido_id` ) as itens on itens.pedido_id = pedido.id

where (month(DATE(pedido.dt_pedido)) = :pMes) and (year(DATE(pedido.dt_pedido)) = :pAno)
group by  DATE(pedido.`dt_pedido` )

A consulta JPQL será aplicada neste modelo simplificado, a dificuldade é que não estou conseguindo realizar um join com select igual no modelo SQL e não estou encontrando literatura que mostre como fazer isso.

49

Se já tem a solução pra funcionalidade em SQL, pq se complicar com JPQL? JPA também aceita SQL.

1 curtida
1 curtida

Opa, tudo bem? No sistema inteiro estou trabalhando com JPQL, esta é a única consulta que usei SQL por limitação de conhecimento! Não estou sabendo como criar este JOIN especificamente com JPQL. Dei uma olhada em vários exemplos, mas nenhum deles mostrando um JOIN em um SELECT.

Como o @javaflex disse, da para executar SQL na JPA

Ao invés de usar o método createQuery, usa createNativeQuery

1 curtida

Nao veja JPQL como bala de prata. Esse tipo de consulta é muito mais prático via SQL diretamente. Cria uma classe que simplesmente represente o resultado desejado para a funcionalidade.

Mas se ainda sabendo disso quer tentar via JPQL, veja se isso ajuda: http://books.google.com.br/books?id=fVCuB_Xq3pAC&pg=PA166&hl=pt-BR&source=gbs_selected_pages&cad=3#v=onepage&q&f=false