기본 콘텐츠로 건너뛰기

181218 java.lang.ClassCastException

java.lang.ClassCastException


1. java.math.BigDecimal cannot be cast to java.lang.String


1) 원인
 - NUMBER 타입의 데이터를 String으로 형변환할 때 발생하는 오류

2) 해결
 - String.valueOf(Object)를 이용하여 해결

예시)
 - slipLineNo 값이 NUMBER 타입

sendData.clear();
sendData.put("cmpnCd"    , param.get(i).get("cmpnCd"));
sendData.put("projCd"    , param.get(i).get("projCd"));
sendData.put("slipNo"    , param.get(i).get("slipNo"));
sendData.put("slipLineNo"String.valueOf(param.get(i).get("slipLineNo")));
sendData.put("sendDvsnCd", param.get(i).get("sendDvsnCd"));
sendData.put("emlSedr"   , param.get(i).get("emlSedr"));
sendData.put("emlSendDt" , param.get(i).get("emlSendDt"));
sendData.put("emlRvcr"   , param.get(i).get("emlRvcr"));
sendData.put("regDtm"    , param.get(i).get("regDtm"));
sendData.put("rgsrId"    , param.get(i).get("rgsrId"));
sendData.put("mdfDtm"    , param.get(i).get("mdfDtm"));
sendData.put("mdfrId"    , param.get(i).get("mdfrId"));
this.mapper.insert("FATM10140M_upsertDoc", sendData);
cs

2. java.sql.Timestamp cannot be cast to java.lang.String

1) 원인
 - DATE 타입의 데이터를 String으로 형변환할 때 발생하는 오류

2) 미봉책
 - try ~ catch~ 를 이용해서 에러를 뱉어냄

3. 전반적인 수습책

 - SQL문을 작성할 때 애초에 TO_CHAR문을 이용해서 String으로 세팅을 해준다