Come faccio a fare un JPQL SubQuery?
Domanda
E 'possibile fare l'equivalente di questa query SQL in 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'
)
Soluzione
È necessario testare con IN e subquery poiché entrambi fare un lavoro in JPQL (secondo riferimento sintassi che funzionano insieme). Si può anche guardare MEMBRO DEL espressioni .
Ma c'è un approccio migliore a mio parere. Tali domande sono chiamati sub-query correlate e si può sempre ri-scrittura usando EXISTS:
SELECT * FROM COUNTRIES c WHERE
EXISTS (
SELECT 'found' FROM PORTS p
WHERE p.COUNTRY_ID = c.COUNTRY_ID AND STATE = 'A'
)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow