2011-09-25 9 views
1

내 MySQL 테이블에 3 열, INT 및 1 VARCHAR 있습니다.Int를 Long으로 리턴하는 Spring Jdbc 템플릿?

클래스 캐스팅 예외가 발생합니다. java.lang.ClassCastException : java.lang.Long을 java.lang.Integer로 형변환 할 수 없습니다. Heres 내 코드 :

List<Map<String, Object>> rows = getJdbcTemplate().queryForList(sql); 
    for (Map row : rows) { 
     Customer customer = new Customer(); 
      // throws ClassCastException 
      // customer.setCustId((Integer)(row.get("CUST_ID"))); 

     customer.setCustId((Long)(row.get("CUST_ID"))); // had to change custId field in bean to long 
     customer.setName((String)row.get("NAME")); 

     // work around 
     customer.setAge(((Long)row.get("AGE")).intValue()); 

     customers.add(customer); 
    } 

제 질문은 왜 Long으로 캐스트해야합니까? 그것은 MySQL에서 허용되는 최대 INT 값과 java가 허용하는 최대 int 값이 같지 않기 때문입니까?

답변

3

MySQL 기본 키 정수는 부호가 없으며 Java int에 서명되어 있습니다. 동일한 비트 수이지만 부호없는 비트는 4G 양의 유효 범위를가집니다.

관련 문제