Spring Jdbc模板返回Int为Long?

时间:2011-09-25 21:07:52

标签: java mysql spring-jdbc

我的MySQL表中有3列,2个是INT,还有1个VARCHAR。

我得到类转换异常:java.lang.ClassCastException:java.lang.Long无法强制转换为java.lang.Integer。继承我的代码:

    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值不相同?

1 个答案:

答案 0 :(得分:3)

MySQL主键整数是无符号的,Java int已签名。相同数量的位,但无符号具有完整的4G正范围。