1

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);
    }

私の質問は、なぜそれをロングにキャストする必要があるのですか? MySQL の最大許容 INT 値と Java の最大許容 int 値が同じではないためですか?

4

1 に答える 1

3

MySQL の主キーの整数は符号なしで、Java は符号int付きです。ビット数は同じですが、符号なしには完全な 4G の正の範囲があります。

于 2011-09-25T21:17:29.657 に答える