Pergunta

É possível fazer o equivalente a essa consulta SQL no 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'
) 
Foi útil?

Solução

Você precisa testá -lo com DENTRO e subconsiva Como ambos trabalham no JPQL (de acordo com a referência de sintaxe, eles trabalham juntos). Você também pode olhar para Membro de expressões.

Mas há uma abordagem melhor na minha opinião. Tais consultas são chamadas de sub-questões correlacionadas e sempre se pode reescrevê-las usando: existe:

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

Suportes JPQL Existe com subconsas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top