📦 Database/JPQL
JQPL 다형성 쿼리 & 결과 조회 API
신건우
2023. 4. 16. 01:11
💡 다형성 쿼리
Type
조회 대상을 특정 하위 클래스로 한정할 수 있다.
예를 들어서 Item이 상위클래스이고 Book, Movie, Song 등 하위 클래스들이 있다고 가정한다.
Item의 하위 클래스 중 Book, Movie만 조회해보자.
String query = "select i from Item i where type(i) in (Book, Movie)";
Treat (JPA 2.1)
- 자바의 타입 캐스팅과 유사하다.
- 상속 구조에서 부모 타입을 특정 자식 타입으로 다룰 때 사용한다.
- FROM, WHERE, SELECT(Hibernate 지원)를 사용한다.
부모 타입의 다운캐스팅 예시
String query = "select i from Item i where treat(i as Book).auther = 'Kim'";
💡 결과 조회 API
- query.getResultList()
- 결과가 하나 이상인 경우(컬렉션일 때), 리스트를 반환한다.
- query.getSingleResult()
- 결과가 정확히 하나, 단일 객체를 반환한다.(정확히 하나가 아니면 예외 발생)
- 결과가 없을때 - NoResultException
- 둘 이상일 때 - NonUniqueResultException