본문 바로가기
자바/JPA

[JPA/Java] JPQL 다형성 쿼리 - TYPE, TREAT

by drCode 2023. 5. 11.
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
반응형

댓글