java - MySQL 将预定义列值返回为 Int

标签 java mysql

我有一个 mysql 查询,它在查询中预定义了一个整数类型的列:

SELECT id, 1 AS item_id from table WHERE other_id = 1;

当我在 Java 中检索此语句时,我收到 ClassCastException:

java.lang.Float cannot be cast to java.lang.Integer

我尝试使用 UNSIGNED 类型将值转换为整数:

SELECT id, CAST(1 AS UNSIGNED) AS item_id from table WHERE other_id = 1;

但这给了我同样类型的错误:

java.math.BigInteger cannot be cast to java.lang.Integer

我不确定这是否是我需要在 Java 或实际 sql 语句中修复的问题,但我想以整数形式返回该值。

我能想象到的 Java 中导致问题的唯一地方可能是我将值作为对象引入,因为我将记录存储为 HashMap 并且不知道确切的列类型。不幸的是我无法改变这一点。

ResultSetMetaData metaData = resultSet.getMetaData();
int columnCount = metaData.getColumnCount();
while(resultSet.next()) {
    HashMap<String, Object> row = new HashMap<String, Object>();
    for(int i=1; i<=columnCount; i++) {
        row.put(metaData.getColumnName(i), resultSet.getObject(i));
    }
    list.add(row);
}

最佳答案

好吧,如果您“认为”该列必须仅包含整数,则应该更新表中的列。

如果您想快速解决此问题,只需在 Java 中转换接收到的结果即可。

int a = (int) rs.getObject("item_id");

关于java - MySQL 将预定义列值返回为 Int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37500949/

相关文章:

java - org.springframework.dao.InvalidDataAccessApiUsageException : Parameter with that position [2] did not exist

java - 如何在 MySQL 表中添加 GENERATED BY DEFAULT AS IDENTITY?

mysql - 在 Laravel 中将原始查询更改为查询生成器时无法获取数据

mysql - 如何使用数组指针从 Perl 中的 MySQL 查询中获取多条记录?

java - Java中将文本数据处理为图像对象的最有效方法?

java - 如何使用Java正确读取RRD文件?

java - Selenium 没有选择正确的值

java - 了解 servlet 和多线程

mysql - 我的解释语句中的派生表是什么

java - 如何检查可能存在或不存在的元素的可见性?