¿Cómo hago un JPQL subconsulta?
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'
)
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