Java JPQL-n-per-group查询
有没有使用JPQL编写此查询的方法:Java JPQL-n-per-group查询,java,spring,postgresql,jpa,Java,Spring,Postgresql,Jpa,有没有使用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."fechaAcci
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
选择*
从“TBCIONCITA”c内部连接“tbAccionCita”ac1
关于c.“citaId”=ac1.“citaId”
(c)“citaId”=ac2。“citaId”和
(ac1.“费卡西翁西塔”
fechaacioncita是一个日期:)
我正在尝试获取userId=1的所有约会(tbCita)的最新状态(一个约会有多个状态)
查询按预期工作,但在JPQL中,它给了我以下错误:
with子句引用了两个不同于子句的元素
以下是查询:
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) "
选择c“
+“来自建训局c”
+“内部连接c.usuarioCita u”
+“内部联接获取c.accionCita a”
+“左外连接c.accionCita a2 on(a.fechaAccionCita
是否执行以下操作?另外,您是否确定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
选择c
来自tbCita c、tbAccionCita ac1、TBUSUARICITA uc、tbUser u
左连接tbAccionCita ac2 on(
c、 citaId=ac2.citaId
和(ac1.fechaacioncita
不相关,但是:有更有效的方法连接到表中的“最新”行。事实上,您的方法效率最低。(顺便问一下:您是否像处理数据库中的表一样,在所有Java类前面加上Cls
前缀?)