Spring Jdbc Шаблон, возвращающий Int как Long? - PullRequest
1 голос
/ 26 сентября 2011

В моей таблице MySQL 3 столбца, 2 INT и один 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);
    }

Мой вопрос: почему я должен привести его к Лонгу? Это потому, что максимально допустимое значение INT в MySQL и максимально допустимое значение int в Java не совпадают?

1 Ответ

3 голосов
/ 26 сентября 2011

Целые числа первичного ключа MySQL не подписаны, Java int s подписаны. То же количество битов, но без знака имеет полный положительный диапазон 4G.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...