JPQLでこのSQLクエリに相当することは可能ですか?
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'
)
[〜#〜] in [〜#〜] および subquery でテストする必要があります。両方ともJPQLで機能するためです(構文参照によると、これらは一緒に機能します)。 MEMBER OF式 もご覧ください。
しかし、私の意見ではより良いアプローチがあります。このようなクエリは相関サブクエリと呼ばれ、EXISTSを使用していつでも書き換えることができます。
SELECT * FROM COUNTRIES c WHERE
EXISTS (
SELECT 'found' FROM PORTS p
WHERE p.COUNTRY_ID = c.COUNTRY_ID AND STATE = 'A'
)
JPQLは サブクエリを含むEXISTS をサポートしています。