是否可以在 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'
) 
有帮助吗?

解决方案

你需要测试它 子查询 因为两者都可以在 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 带有子查询.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top