728x90
반응형

위와 같이 설계가 되어있다고 가정을 하고 다형성 쿼리에 대해서 설명을 하겠다.
TYPE
조회 대상을 특정 자식으로 한정할 수 있다.
예를 들어서 Item 중에 Book, Movie를 조회해라 라고 했을 때 JPQL로 아래와 같이 작성을 하면,
select i from Item i
where type(i) in (Book, Movie)
SQL은 아래와 같은 결과가 나온다.
select i from i
where i.DTYPE in ('B', 'M')
TREAT
TREAT는 자바의 타입 캐스팅과 유사하다.
상속 구조에서 부모 타입을 특정 자식을 타입으로 다룰 때 사용한다.
FROM, WHERE, SELECT(하이버네이트 지원) 사용한다.
예를 들어서 부모인 Item과 자식 Book이 있다.
JPQL로 아래와 같이 작성을 하면
select i from Item i
where treat(i as Book).author = 'park'
SQL문의 결과는 아래와 같이 나온다.
select i.* from Item i
where i.DTYPE = 'B' and i.author = 'park'
auther은 Book에만 있는 필드이며, 위와 같이 작성을 하면 다운 캐스팅을 할 수 있는 것이다.
728x90
반응형
'TIL > JPA' 카테고리의 다른 글
[TIL/JPA] 기본개념 : Named 쿼리 (0) | 2024.09.17 |
---|---|
[TIL/JPA] 기본개념 : JPQL에서 엔티티 직접 사용하기 (0) | 2024.09.17 |
[TIL/JPA] 기본개념 : 페치 조인(fetch join) (0) | 2024.09.11 |
[TIL/JPA] 기본개념 : 경로 표현식 (0) | 2024.09.10 |
[TIL/JPA] 기본개념 : JPQL(Java Persistence Query Language) (0) | 2024.09.09 |