jfinal查询MySQL表bigint型字段,总是动态返回int或者long,不固定

littleant 发布于 2014/07/11 21:50
阅读 2K+
收藏 0
我用jfinal链接MySQL ,查询出来的结果, 为什么类型会经常变,数据库表字段类型是bigint, 查出来总是在int和long之间随机变动   @jfinal
加载中
0
JFinal
JFinal

引用来自“littleant”的评论

看来不止我一个遇到过这个问题,http://www.oschina.net/question/25621_90291

我做查询没用到统计,就是简单的一行记录,里面有bigint字段,取值时有时是int,有时是long,几乎是随机的出现,我本身代码getLong取值,有时运行项目又报错,一条是是int,改过来吧,有时又是long

再就是我是用的getLong,出现int的几率还是比较小的

@jfinal  

       这种现象非常奇怪,可能是由于某种未知的原因引起的,历史上有位朋友是因为其他人改了数据库表字段类型引起的,你可以关注一下是否是这个问题。目前你可以针对这个出问题的字段使用下面的办法来解决:

model.getNumber(attr).longValue();
// 或者
model.getNumber(attr).intValue();
littleant
littleant
哦,好的,有办法就行。我这还真没改过字段,嘿嘿!共享了个项目JfinalUIB,正常运行起来的人很多,就一个人遇到了这个问题,一直在为他解释这个问题...
0
JFinal
JFinal
     在 sql 中使用 sum count 等函数后,由于查出的结果可能造成数值溢出,故 JDBC 会自动向字节更多的类型转换,这个行为是 JDBC 的,JFinal 并未干预。例如表字段money为 int, 而 sql 是 Db.find("select sum(money) from ....") 通过 sum(money)得到的结果类型为 Long,而非 Integer
littleant
littleant
恩,谢谢老大,我再查查看
0
littleant
littleant

看来不止我一个遇到过这个问题,http://www.oschina.net/question/25621_90291

我做查询没用到统计,就是简单的一行记录,里面有bigint字段,取值时有时是int,有时是long,几乎是随机的出现,我本身代码getLong取值,有时运行项目又报错,一条是是int,改过来吧,有时又是long

再就是我是用的getLong,出现int的几率还是比较小的

@jfinal  

0
EnoND
EnoND

@JFinal

我之前也遇到过类似的问题,就是getInt(“id”)总是报long无法转换 int 的错误。后来发现我同事用其他的数据库软件创建的数据时,把某个选项勾选了,我在navicat for mysql中查看时就发现,id这列有个“无符号”的选项被勾选了,我取消之后,getInt就正常了。

JFinal
JFinal
如果是无符号整型,那么 JDBC 对应的 java 类型就是 Long,这个是正常现象,看个人选择
返回顶部
顶部