728x90
반응형
문제 상황
java.lang.Exception: nested exception is org.apache.ibatis.executor.ExecutorException: No constructor found in egovframework.root.tossPayment.dto.OrderDto matching [java.lang.String, java.lang.String, java.lang.String, java.lang.Integer, java.lang.String, java.lang.String]
MyBatis를 사용하여 selectPayment 쿼리를 실행할 때 다음과 같은 예외가 발생했습니다.
OrderDto.java
@Builder
@AllArgsConstructor(access = AccessLevel.PRIVATE)
@ToString
@Getter
public class OrderDto {
private String userId;
private String paymentKey;
private String orderId;
private long amount;
private String status;
private String ip;
}
OrderDto 클래스는 다음과 같습니다.
TossPaymentSQL.xml
<select id="selectPayment" resultType="OrderDto">
select user_id
, order_payment_key
, order_id
, order_amount
, order_status
, order_ip
from tu_order
where order_id = #{orderId}
</select>
MyBatis 매퍼 XML에 정의된 selectPayment 쿼리는 다음과 같습니다
문제 원인
OrderDto의 amount 필드는 long 타입으로 정의되어 있지만,
예외 메시지에서 보면 MyBatis는 order_amount 컬럼을 Integer로 매핑하려고 합니다.

DB를 확인해보면 order_amount의 Data Type은 int입니다.
OrderDto 생성자가 long 타입의 amount를 받지 못해 예외가 발생한 것입니다.
해결
@Builder
@AllArgsConstructor(access = AccessLevel.PRIVATE)
@ToString
@Getter
public class OrderDto {
private String userId;
private String paymentKey;
private String orderId;
private Integer amount;
private String status;
private String ip;
}
private long amount의 타입을 Integer로 변경해
MyBatis와 OrderDto 간의 타입 불일치를 해결했습니다.
반응형
'Spring' 카테고리의 다른 글
[tomcat] 톰캣 로그 한글 깨짐 (0) | 2024.07.23 |
---|---|
[tomcat] error running tomcat can't find catalina.jar (1) | 2024.07.23 |
[Spring Boot] JPA @Transactional과 변경 감지 Update (0) | 2024.07.11 |
[SpringBoot] DI 생성자 주입 (1) | 2023.10.26 |
[SpringBoot] 프로젝트 빌드 및 실행 (0) | 2023.10.17 |