카테고리 없음

JPA : 네이티브 쿼리 결과 집합을 POJO 클래스 컬렉션으로 변환하는 방법

기록만이살길 2021. 2. 25. 07:31
반응형

JPA : 네이티브 쿼리 결과 집합을 POJO 클래스 컬렉션으로 변환하는 방법

1. 질문(문제점):

내 프로젝트에서 JPA를 사용하고 있습니다.

5 개의 테이블에서 조인 연산을해야하는 쿼리를 찾았습니다. 그래서 5 개의 필드를 반환하는 네이티브 쿼리를 만들었습니다.

이제 결과 객체를 동일한 5 개의 문자열을 포함하는 Java POJO 클래스로 변환하고 싶습니다.

JPA에서 그 결과를 POJO 객체 목록으로 직접 캐스팅하는 방법이 있습니까?

다음과 같은 해결책을 찾았습니다 ..

@NamedNativeQueries({  
    @NamedNativeQuery(  
        name = "nativeSQL",  
        query = "SELECT * FROM Actors",  
        resultClass = db.Actor.class),  
    @NamedNativeQuery(  
        name = "nativeSQL2",  
        query = "SELECT COUNT(*) FROM Actors",  
        resultClass = XXXXX) // <--------------- problem  
})  

이제 resultClass에서 실제 JPA 엔티티 인 클래스를 제공해야합니까? 또는 동일한 열 이름을 포함하는 JAVA POJO 클래스로 변환 할 수 있습니까?

2. 해결방안:

JPA는 SqlResultSetMapping네이티브 쿼리의 모든 반환을 엔티티에 매핑 할 수 있는를 제공합니다.또는 사용자 정의 클래스.

EDIT JPA 1.0은 엔티티가 아닌 클래스에 대한 매핑을 허용하지 않습니다. JPA 2.1에서만 ConstructorResult 가 반환 값을 Java 클래스에 매핑하기 위해 추가되었습니다.

또한 OP의 개수를 얻는 문제의 경우 단일 결과 집합 매핑을 정의하는 것으로 충분해야합니다. ColumnResult

65810314
반응형