I'm YOUNG


오라클 NUMBER 형 컬럼의 데이터를 HashMap 타입으로 받아
java에서 사용하려고 하니
java.math.BigDecimal cannot be cast to java.lang.String  오류가 발생하더군요.

사용된 iBatis 문

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<select id="SQL-VIEW" parameterClass="java.util.Map" resultClass="java.util.HashMap">
SELECT
    ID
    ,COMMUNITY_ID
    ,TITLE
    ,TYPE_CODE
    ,LIST_ORDER
    ,PAGE_SIZE
    ,HYPERLINK_URL
    ,AUTH_WRITE
    ,AUTH_READ
    ,IS_OPEN
    ,TO_CHAR(REG_DATE, 'YYYY.MM.DD HH24:MI') REG_DATE
    ,TO_CHAR(UPT_DATE, 'YYYY.MM.DD HH24:MI') UPT_DATE
    FROM COMMUNITY_MENUS
WHERE
    ID = #menuID#
    AND IS_DELETE = 'N'
</select>
cs


오류가 발생한 java 문
String pageSize = (String) mnuMap.get("PAGE_SIZE"));


NUMBER 타입을 곧바로 String으로 캐스트 변환하려고 하니 생기는 문제였습니다.

캐스트 변환을 하지 않고,
String 클래스의 valueOf (Object) 메소드를 이용해 처리하면
문제 해결할 수 있습니다.

수정된 java 문
String pageSize = String.valueOf(mnuMap.get("PAGE_SIZE"));


작게나마 도움 되시길~ ^^



Comment +4

  • 김웅진 2011.05.10 10:04

    크게 도움이 되었습니다. int 변환 후 다시 String변환 처리도 안먹혀서 고민하고 있었는데 왜 이걸 생각하지 못했나

    자책이 들 정도로 한방에 해결 되었습니다. ^_^

  • 이홍주 2011.05.25 11:30

    완전 감사합니다.~~ 캬캬캬
    하나 배우고 가네요~