Comment puis-je faire une JPQL sous-requête?
Question
Il est possible de faire l'équivalent de cette requête SQL dans JPQL?
SELECT *
FROM COUNTRIES c WHERE COUNTRY_ID IN (
SELECT DISTINCT COUNTRY_ID
FROM PORTS p
WHERE p.COUNTRY_ID = c.COUNTRY_ID AND STATE = 'A'
)
La solution
Vous devez tester avec et sous-requête puisque les deux font un travail en JPQL (selon référence de syntaxe qu'ils travaillent ensemble). Vous pouvez également regarder MEMBRE expressions .
Mais il y a une meilleure approche à mon avis. Ces requêtes sont appelées sous-requêtes corrélées et on peut toujours réécrire les utiliser EXISTE:
SELECT * FROM COUNTRIES c WHERE
EXISTS (
SELECT 'found' FROM PORTS p
WHERE p.COUNTRY_ID = c.COUNTRY_ID AND STATE = 'A'
)
JPQL supporte coexiste avec les sous-requêtes .
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow