728x90
반응형
다형성 쿼리로는 TYPE, TREAT이 있다.
TYPE 예시
예시) Item 중에 Book, Movie를 조회하라
[JPQL]
jpql = "SELECT i FROM Item i WHERE type(i) IN (Book, Movie)";
[SQL]
SELECT i FROM i
WHERE i.DTYPE in (‘B’, ‘M’)
TREAT(JPA 2.1)
TREAT은 자바의 타입 캐스팅과 유사하다.
상속 구조에서 부모 타입을 특정 자식 타입으로 다룰 때 사용한다.
FROM, WHERE, SELECT(하이버네이트 지원) 에서 사용할 수 있다.
예시) 부모인 Item과 자식 Book이 있다.
[JPQL]
jpql = "SELECT i FROM Item i WHERE treat(i as Book).author = 'kim'";
[SQL]
SELECT i.* FROM Item i
WHERE i.DTYPE = ‘B’ AND i.auther = ‘kim’
728x90
반응형
'자바 > JPA' 카테고리의 다른 글
[JPA/Java] JPQL Named 쿼리 - 어노테이션, XML (0) | 2023.05.11 |
---|---|
[JPA/Java] JPQL 엔티티 직접 사용 (0) | 2023.05.11 |
[JPA/Java] JPQL 패치 조인의 한계 - 글로벌 배치 패치 사이즈, @BatchSize (0) | 2023.05.11 |
[JPA/Java] JPQL fetch join (패치 조인) (2) | 2023.05.10 |
[JPA/Java] JPQL 경로 표현식 (0) | 2023.05.10 |
댓글