Java异常:Java.lang.ClassCastException:Java.lang.Long不能转换为Java.lang.Integer

Java异常:Java.lang.ClassCastException:Java.lang.Long不能转换为Java.lang.Integer,java,exception,jdbc,type-conversion,long-integer,Java,Exception,Jdbc,Type Conversion,Long Integer,我有一个数据库表,其中一个属性名为: task_id and type is "int unsigned". 在java中,我尝试使用jdbc TMeplate从该表中读取数据,如下所示: string sql = select task_id from table where ......... List<Map<String, Object>> list = jdbcTemplate.queryForList(sql); 但是如果我使用

我有一个数据库表,其中一个属性名为:

task_id and type is "int unsigned".
在java中,我尝试使用jdbc TMeplate从该表中读取数据,如下所示:

string sql = select task_id from table where .........

List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
但是如果我使用

  Long x=(Long)task.get("task_id");  //work.
那么它工作得很好。
那么,在这种情况下,java如何决定对象包含Integer还是Long?为什么Integer typecast失败,但Long有效?

请记住,
int unsigned
是数据库指定的类型。我猜它是一个32位无符号整数类型,因此从0变为2^32int是一种有符号类型,从-2^31变为2^31-1。这意味着要表示DB类型
int unsigned
的整个可能范围,您必须在Java中使用另一种类型
long
(或
long
)是这里显而易见的选择。有意义。谢谢
java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Integer
  Long x=(Long)task.get("task_id");  //work.