Wie mache ich einen JPQL SubQuery?
Frage
Es ist möglich, das äquivalent diese SQL-Abfrage in JPQL zu tun?
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'
)
Lösung
Sie müssen es testen mit IN und Unterabfrage da beide Arbeit verrichten in JPQL (gemäß Syntax Bezug sie funktionieren zusammen). Sie können auch einen Blick auf MEMBER OF Ausdrücke .
Aber es ist ein besserer Ansatz meiner Meinung nach. Solche Abfragen werden korrelierte Unterabfragen genannt und man kann immer neu schreiben sie mit VORHANDEN:
SELECT * FROM COUNTRIES c WHERE
EXISTS (
SELECT 'found' FROM PORTS p
WHERE p.COUNTRY_ID = c.COUNTRY_ID AND STATE = 'A'
)
JPQL unterstützt VORHANDEN mit Subqueries .
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow