有没有办法使用JPQL编写此查询:
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是一个日期:)
我试图通过userId = 1获得所有约会(tbCita)的最新状态(一个约会有多个州)。
查询正在按预期工作,但在JPQL中它给出了以下错误:
with-clause引用了两个不同的from子句元素
这里是查询:
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) "
答案 0 :(得分:0)
以下是否有效?此外,您确定OR语句中的逻辑是否按预期工作?您似乎可能需要一组额外的括号。
select c
from tbCita c, tbAccionCita ac1, tbUsuarioCita uc, tbUser u
left join tbAccionCita ac2 on (
c.citaId = ac2.citaId
and (ac1.fechaAccionCita < ac2.fechaAccionCita
or ac1.fechaAccionCita = ac1.fechaAccionCita
and ac1.accionCitaId < ac2.accionCitaId))
where c.citaId = ac1.citaId
and c.citaId = uc.citaId
and uc.userId = u.userId
and ac2.accionCitaId is null
and u.userId = 1