我有一个 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/