SpringBoot , Thymeleaf
[에러] java.sql.SQLException: Out of range value for column
수동애비
2022. 3. 17. 12:10
반응형
mybatis 사용 중인데 저 에러가 나와서 한참 당황했다.
보통 mapper xml 의 쿼리의 resultType 으로 지정된 타입과 쿼리 결과 값이 안맞을 때 발생하는데 이번엔 그 경우가 아니였음.
아래와 같이 DTO 을 정의하고 String 타입의 value 를 int 타입으로도 설정할 수 있는 함수를 오버로딩 해놨었는데 mapper xml 에서 쿼리 실행 후 결과를 저 놈을 통해서 할당하면서 타입이 맞지 않아 발생했던 것이다.
이 경우 뭔가 방법이 있을것 같긴한데 방법을 찾아보는 귀찮음에 비해 크게 이득이 없기에 setValue(int) 을 setIntValue(int) 로 변경하였다.
// ---- DTO Class -------
@Setter
@Getter
public class PropertyDTO {
public String key, value;
public PropertyDTO(String key, String value) {
this.key = key;
this.value = value;
}
public int getIntValue() {
int result = 0;
if (value != null) {
try {
result = Integer.valueOf(value);
} catch(Exception e) {
// Nop
}
}
return result;
}
public void setValue(int val) { <= 요놈 이름을 setIntValue 로 바꿔줘야 했다.
value = String.valueOf(val);
}
}
// ---- Mapper XML -------
<select id="getProperty" parameterType="String" resultType="PropertyDTO">
SELECT key, value FROM Properties
</select>