Pregunta

Es posible hacer el equivalente de esta consulta SQL en 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'
) 
¿Fue útil?

Solución

Es necesario probarlo con eN y subconsulta ya que ambos hacen el trabajo en JPQL (según la referencia de sintaxis que hacen el trabajo en conjunto). También puede buscar en MIEMBRO DE expresiones .

Pero hay un método mejor en mi opinión. Dichas consultas se llaman correlacionados sub-consultas y uno siempre se puede volver a escribir usando existe:

SELECT * FROM COUNTRIES c WHERE 
EXISTS (
        SELECT 'found' FROM PORTS p 
        WHERE p.COUNTRY_ID = c.COUNTRY_ID AND STATE = 'A'
) 

JPQL apoya existe con subconsultas .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top