Error) java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.Integer/Double

이지우·2022년 11월 3일
0

https://www.lissapark91.com/2018/10/javalangclasscastexception.html
MyBatis로 Oracle 데이터를 가져올 때 Map으로 받아서 가져올 경우 종종 발생한다.
더 자세히 살펴보면 Oracle에서 데이터 타입이 number인 데이터를 Java에서 Integer로 받을 때 발생하는데
단순히 casting을 (Integer)와 같이 하였다면 위 Exception이 발생한다.

Oracle 타입 Number의 값을 MyBatis 통해 Map의 Integer/Double (Map은 int/double 타입 선언 불가) 타입으로 받아 VO 또는 DTO의 int/double 타입 변수에 값 선언하려 할 때 종종 발생함

commentUserDTO.setStarRatingCnt(Integer.parseInt(String.valueOf(starRatingAvgCnt.get("cnt"))));

-> String.valueOf()를 이용해 숫자값을 문자열로 변환한 후, Integr.parseInt 통해 int로 변환해줌

profile
IT개발 입문합니다.

0개의 댓글