我有一个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);
}
答案 0 :(得分:2)
好吧,如果你&#34;想想&#34;该列必须仅包含整数,您应该在表中UPDATE
列。
如果您想快速解决此问题,只需将收到的结果转换为Java。
int a = (int) rs.getObject("item_id");