この SQL クエリを JPQL に変換するのに少し問題があります。
select max(datePurchase) from purchases where userId = id and date_trunc('day',datePurchase)
in (select distinct (date_trunc('day',datePurchase)) as day from purchases where userId = id and datePurchase < initialDate and datePurchase > finalDate) group by date_trunc('day',datePurchase)
このSQLはうまく機能しており、ユーザーからの1日あたりの最後の購入を返します。JPQLで同じことをしようとしました:
Query query = em.createQuery("SELECT u MAX(u.datePurchase) FROM Purchases u WHERE u.userId.id = :id AND FUNC('day',u.datePurchase)" +
"IN (SELECT DISTINCT (FUNC('day',u.datePurchase)) AS day FROM Purchases WHERE u.userId.id = :id AND u.datePurchase < :finalDate AND u.datePurchase > :inicialDate) GROUP BY FUNC('day',u.datePurchase)");
query.setParameter("id", idUsuario);
query.setParameter("dataInicial", dataInicial);
query.setParameter("dataFinal", dataFinal);
List<MovSaldo> saldos = (List<MovSaldo>) query.getResultList();
em.getTransaction().commit();
エラーは次のとおりです。「IN 式に有効な式がありません。」「範囲変数宣言には識別変数を指定する必要があります。」
おそらくそれほど難しいことではありませんが、私はすでに少しイライラする時間を費やしてきました. 誰か助けてくれませんか?