Как преобразовать SQL-запрос mysql с помощью criteriaquery

#spring #jpa #jpql

#spring #jpa #jpql

Вопрос:

Как преобразовать sql-запрос mysql с помощью criteriaquery этот код:

 SELECT  a.customer as customer,  a.cbgroup, a.cbdept, a.buc, a.customer_group, a.product, a.valuta,  a.a_amount, a.cbgroup, b.b_amount, (b.b_amount-a.a_amount) as percentage 
        FROM (
            SELECT a.customer, a.date, a.cbgroup, a.cbdept, a.buc, a.customer_group, a.product, a.valuta,  SUM(a.amount) as a_amount FROM summaryfee as a WHERE a.date = '2019-06-30' AND a.cbgroup = 'CORPORATE BANKING 1' GROUP BY a.customer
            ) AS a INNER JOIN 
            (
            SELECT b.customer, SUM(b.amount) as b_amount FROM summaryfee as b WHERE b.date = '2020-06-30' AND b.cbgroup = 'CORPORATE BANKING 1' GROUP BY b.customer
            ) AS b
        ON a.customer=b.customer  AND (b.b_amount-a.a_amount) < 0 ORDER BY CASE WHEN a.customer NOT LIKE '%Transaksi Nasabah%' THEN 0
      ELSE 1
     END, percentage asc LIMIT 5
  

Ответ №1:

Вы можете переписать запрос JPQL как запрос критериев, но не любой собственный SQL-запрос.

Проблема с вашим запросом выше заключается в том, что в предложении FROM используются подзапросы.

Язык запросов JPQL и запрос критериев, по крайней мере, до спецификации 2.1 JPA, поддерживают подзапросы только в предложениях WHERE и HAVING.