1. 문제 사항
쿼리문을 실행 시, qrlm 라이브러리를 사용하여 DB의 결과를 DTO와 맵핑하는 과정에서 오류가 발생했다.
Service
...
JpaResultMapper result = new JpaResultMapper();
List<SubscribeDto> subscribeDtoList = result.list(query, SubscribeDto.class);
...
SubscribeDto
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Data
public class SubscribeDto {
private Long id;
private String username;
private String profileImageUrl;
private Long subscribeState;
private Long equalUserState;
}
2. 원인
UserEntity 생성 시, id의 타입을 Long 설정하니 MySQL에서 id의 타입을 확인해 본 결과 BIGINT로 설정되었다.
MySQL 데이터 타입과 Java 데이터 타입이 맞지않아 발생한 오류 같다.
MySQL의 BIGINT 데이터 타입은 Java에서 Long 또는 BigInteger 타입과 비교할 수 있다.
DTO의 타입을 Long으로 받았지만 오류가 발생한걸 보면 Unsigned라서 BigInteger을 받아야 하나보다.
3. 해결
DTO에서 BigInteger로 받아주니 잘 작동한다.
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Data
public class SubscribeDto {
private BigInteger id;
private String username;
private String profileImageUrl;
private BigInteger subscribeState;
private BigInteger equalUserState;
}
4. 참고
'Trouble Shooting' 카테고리의 다른 글
리소스를 HTTPS 프로토콜 호출로 인한 ERR_SSL_PROTOCOL_ERROR 발생, Mixed Content (0) | 2024.04.17 |
---|---|
Spring Boot Jpa IllegalArgumentException 에러 (2) | 2022.05.18 |
AWS EC2 Gradle 배포 시 멈춤현상 (0) | 2022.05.04 |
Spring boot와 h2 Database 연동 오류발생 (0) | 2022.04.10 |
[Hibernate Error] TransientPropertyValueException : object references an unsaved transient instance (0) | 2022.03.21 |