[英]How do I do a JPQL SubQuery?
可以在 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和子查詢對其進行測試,因為它們都可以在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 。
是的,可以在 JPQL 中使用帶有IN
運算符的subquery
。 我有一個類似的用例,它對我有用。 我的查詢如下。
@Query("SELECT g FROM Group g WHERE g.id IN (SELECT DISTINCT m.groupId FROM Member m WHERE m.id IN (?1))")
List<Group> findAllGroupsOfMembers(List<BigInteger> memberIds);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.