对于jfinal中java.lang.Long cannot be cast to java.lang.Integer的解决方法
2024-10-18 23:28:23
@Jfinal 老大提供的解决方法
当数据库字段为 int 型(有符号int型),但是如果在 sql 中使用了某些函数,jdbc 会自动转型为 long,例如:select sum(money) from account where accountId = 123。这个行为是 jdbc自动做的,目的是为了防止数据溢出,因为在本例中 money 本来是 int 型,但是 sum(money) 以后很可能数值会超过 java Integer.MAX_VALUE值。另一种 int 自动转 long 型是因为字段使用是无符号 int 型,这两种自动转型都是 jdbc 自动的,jfinal 未做任何干预。至于 int 型可以使用 getStr 读取出来,那必定是值为 null, 否则肯定会抛出类型转换异常。
解决的办法通常两个:
1:预知可能的转型,使用正确的类型变量去接收值,例如用 Long变量去接收 select sum(xxx)值。
2:使用 getNumber(attr).intValue() 确切一定得到 Integer 值,或者使用 getNumber(attr).longValue() 确切一定得到 Long 值。
最新文章
- Java final 关键词修饰类、方法、变量
- 8.1 EntityTypeConfiguration Class in Code-First【Code First系列】
- JQuery获取浏览器窗口的可视区域高度和宽度,滚动条高度
- NOIP2014 总结
- FOR ALL ENTRIES IN 与 INNER JOIN 写在一个SQL上影响效率
- C# 格式化小总结
- ProgressBar样式(转)
- POJ1780 Code(欧拉路径)
- java作业6
- 推荐几款jQuery表格插件
- [DEncrypt] Encrypt--加密/解密/MD5加密 (转载)
- WPF 媒体播放器(MediaElement)实例,实现进度和音量控制
- Nginx模块开发入门(转)
- hibernate 事务理解
- L - Non-Prime Factors (质数筛选+因子分解)
- CPU-bound(计算密集型) 和I/O bound(I/O密集型)
- 洗礼灵魂,修炼python(32)--面向对象编程(2)—进一步认识类
- Ajax详细剖析
- k8s weave network IP回收冲突
- pytest.10.使用fixture参数化测试预期结果