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'
) 
Était-ce utile?

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
scroll top