Как мне сделать подзапрос JPQL?
Вопрос
Можно сделать эквивалент этого запроса 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 поддерживает Существует с подзапрониками.
Не связан с StackOverflow