Skip to main content

JPQL-기본2

·223 words·2 mins· loading
Table of Contents
JPA - This article is part of a series.
Part 10: This Article

조인
#

  • 내부(inner) 조인 SELECT m FROM Member m [INNER] JOIN m.team t
  • 외부(left) 조인 SELECT m FROM Member m LEFT [OUTER] JOIN m.team t
  • 세타? (연관관계 없는거) 조인 SELECT count(m) from Member m, Team t where m.username = t.name

ON절
#

조인 대상 필터링

JPQL : SELECT m, t FROM Member m LEFT JOIN m.team t on t.name = 'A' SQL : SELECT m.*, t.* FROM Member m LEFT JOIN TEAM t ON m.TEAM_ID and t.name='A'

연관관계 없는 엔티티 외부 조인

JPQL : SELECT m, t FROM Member m LEFT JOIN TEAM t on m.username = t.name SQL : SELECT m.*, t.* FROM Member m LEFT JOIn TEAM t ON m.username = t.name


서브쿼리
#

  • 나이가 평균보다 많은 회원
select m from Member m
where m.age > (select avg(m2.age) from Member m2)
  • 한 건이라도 주문한 고객
select m from Member m
where (select count(o) from Order o where m = o.member) > 0

*{ALL | ANY | SOME}, EXISTS, IN 등 사용 가능 *

인라인뷰(FROM절 서브쿼리)는 불가 = > 웬만하면 조인으로 풀어서 해결


타입 표현
#

  • 문자 : 'HELLO', She''s'
  • 숫자: 1[L|D|F]
  • Boolean: TRUE /FALSE
  • Enum : 패키지명 포함
  • 엔티티 : TYPE(m) = Member (상속관계일때)

CASE, COALESCE, NULLIF 사용 가능

기본 함수
#

  • 기본적으로 공통 제공 : CONCAT,SUBSTRING, TRIM , LOWER/UPPER,LENGTH,LOCATE,SIZE,INDEX
  • 웬만한 DB의 함수들은 (DB종속적이긴 하지만) 등록되어 있음

정안되면 NativeQuery() 도 있음

JPA - This article is part of a series.
Part 10: This Article