Java JPQL-n-per-group查询

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

有没有使用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
选择*
从“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
前缀?)