Вопрос

Можно сделать эквивалент этого запроса SQL в 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'
) 
Это было полезно?

Решение

Вам нужно проверить это с В и подзапрос Поскольку оба работают в JPQL (в соответствии с синтаксической ссылкой, которую они работают вместе). Вы также можете посмотреть на Член выражений.

Но на мой взгляд есть лучший подход. Такие запросы называются коррелированными подпрострами, и можно всегда повторно написать их использование:

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

Jpql поддерживает Существует с подзапрониками.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top