0
JPQLを使用して、このクエリを記述することが方法です:JPQL最大-N-グループごとのクエリ
select *
from "tbCita" c inner join "tbAccionCita" ac1
on c."citaId" = ac1."citaId"
left outer join "tbAccionCita" ac2 on (c."citaId" = ac2."citaId" and
(ac1."fechaAccionCita" < ac2."fechaAccionCita"
or ac1."fechaAccionCita" = ac1."fechaAccionCita"
and ac1."accionCitaId" < ac2."accionCitaId")
)
inner join "tbUsuarioCita" uc
on c."citaId" = uc."citaId"
inner join "tbUser" u
on uc."userId" = u."userId"
where
ac2."accionCitaId" is null
and u."userId" = 1
fechaAccionCitaは日付です:)
私は、最新のを取得しようとしています= 1
userIdを持つすべての予定(tbCita)のための状態は、(1回の予定が複数の状態を持っている)クエリが期待どおりに動作しているが、JPQLで、それは私に次のエラー与える:
をここではwith-clause referenced two different from-clause elements
クエリ:
SELECT c "
+ "FROM Cita c "
+ "INNER JOIN c.usuarioCita u "
+ "INNER JOIN FETCH c.accionCita a "
+ "LEFT OUTER JOIN c.accionCita a2 on (a.fechaAccionCita < a2.fechaAccionCita or "
+ "a.fechaAccionCita = a2.fechaAccionCita and a.accionCitaId < a2.accionCitaId) "
無関係ですが、テーブル内の「最新の」行に結合するより効率的な方法があります。あなたのものは実際には最も効率的ではありません。 (Btw:データベースのテーブルと同様に、すべてのJavaクラスの前に 'Cls'を付けますか?) –