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'
) 
È stato utile?

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'
) 

esiste con sottoquery .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top