Problème de conversion de requêtes SQL en JPQL (EclipseLink)
-
27-09-2019 - |
Question
Hé les gars, j'ai la requête suivante et pour la vie de moi je ne peux pas sembler traduire en JPQL. Le SQL travail est:
select * from TB_PRINT_DETAIL y inner join
(select JOB_ID,max(COPY_NUM) MAX_COPY_NUM from TB_PRINT_DETAIL group by JOB_ID ) x
on y.JOB_ID = x.JOB_ID and y.COPY_NUM = x.MAX_COPY_NUM
Ma faible tentative de le traduire est comme suit:
select o from PrintDetailEntity o inner join (select o2.jobId, max(o2.copyNumber) as
maxCopyNum from PrintDetailEntity o2 group by o2.jobId ) as x on o.jobId = o2.jobId and
o.copyNum = o2.maxCopyNum where o.printSuppressionReasonEntity is null
Merci d'avance pour toute lumière que vous pouvez briller!
La solution
Si je comprends bien votre requête (sélectionner des entités qui ont le plus copyNumber
parmi les ENTITES avec le même jobId
), ce qui suit devrait fonctionner:
SELECT o
FROM PrintDetailEntity o
WHERE o.copyNumber =
(SELECT MAX(e.copyNumber) FROM PrintDetailEntity e WHERE o.jobId = e.jobId)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow