用的是jfinal+mysql。。查询语句中有一个字段
IFNULL(a,b) as STATUS
查出来之后。发觉有时候是LONG,有时候是INTEGER.
a,b的定义都是int
想问下为什么会有这种情况?
因为我取出来之后是要做一个值比较判断。用Long或者Integer去接收这个值都会有时候出现CLASSCASTEXCEPTION问题。。
JFinal 将数据从 ResultSet 中读取出来时并未对对数据进行转换(CLOB、BLOB类型除外),如果出现int 自动转 long 肯定是 JDBC 自己的行为。
以前出现 int 字段转 long 的例子:
`Long sum = Db.queryLong("select sum(money) from account where id=123");
` 这里假定 money 是 int 型,但使用了 sum 函数,jdbc 就一定会将之转成long 值结果,这是因为sum出来的结果int保存可能会溢出。
而你碰到的情况或许也与上面的例子类似,是因为在 sql 中使用了函数
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。