native query의 alias를 camel case로 작성
SELECT p.member_id as patientId
FROM patient
public record DataHistoryHoursMapping(Integer patientId, Integer hours) {
}
- SqlResultSetMapping의 클래스 변수명과 일치시켜야 한다. native query에 snake case로 alias 하면 아래와 같은 오류 나옴
- org.springframework.orm.jpa.JpaSystemException: Could not resolve column name in result set [patientId];
@SqlResultSetMapping의 컬럼 타입을 클래스 타입과 같게 작성
@SqlResultSetMapping(
name = "DataHistoryHoursMapping",
classes = @ConstructorResult(
targetClass = DataHistoryHoursMapping.class,
columns = {
@ColumnResult(name = "patientId", type = Integer.class),
@ColumnResult(name = "hours", type = Integer.class)
}
)
)
public record DataHistoryHoursMapping(Integer patientId, Integer hours) {
}
- 일치하지 않으면 다음과 같은 오류가 발생함.
- org.springframework.dao.InvalidDataAccessApiUsageException: Could not locate appropriate constructor on class
@SqlResultSetMapping 컬럼 순서와 DTO 변수 순서 매칭