JPA 서브쿼리
- 나이가 평균보다 많은 회원
1 2
select m from Memeber m where m.age > (select avg(m2.age) from Member 2)
- 한 건이라도 주문한 고객
1 2
select m from Member m where (select count(o) from Order o where m = 0.member) > 0
서브 쿼리 지원 함수
- [NOT] EXISTS (subquery): 서브 쿼리에 결과가 존재하면 참
-
{ALL ANY SOME} (subquery) - ALL 모두 만족 하면 참
- ANY, SOME : 같은 의미, 조건을 하나라도 만족하면 참
-
- [NOT] IN (subquery) : 서브쿼리의 결과 중 하나라도 같은 것이 있으면 참

JPA 서브 쿼리 한계
- JPA 는 WHERE, HAVING 절에서만 서브 쿼리 사용 가능
- 하이버네이트에선 SELECT 에서도 사용 가능
- FROM절의 서브쿼리는 현재 JPQL 에서 사용 불가능
- 조인으로 풀 수 있으면 풀어서 해결
댓글남기기