java.lang.Byte cannot be cast to java.lang.Integer,sql 到 java 类型转换遇到的问题

汇总一些sql中字段类型为 tinyint 的报错。


  1. java.lang.Byte cannot be cast to java.lang.Integer

1. 需要在读取的时候将 tinyint 的变量 CAST( 变量 AS INT) 来进行处理。
这是别的人的一个解决方法。
我在实际操作的时候,还是报错了。具体原因现在我还无法给出。
据我分析,从数据库读出来的 tinyint 被自动转为了 decimal 类型。而decimal因为精度,或者长度等因素,无法转换为int。
这里可以用 CAST( tinyint变量 AS DECIMAL)。

2. SELECT (变量 + 0 ) FROM 表名。
我在看java基础书,讲到类型转换的时候想到的。同理,转数字类型使用 (变量*1) 也可以。
转字符串 :使用 (变量 + ‘’) 。
今天写博客重新搜解答的时候,看到了类似的答案,当时没有往类型转换的方面想,所以大脑自动忽略了。今天看到真是后悔。


  1. cannot cast to 其他类型报错。

读取的长度太小,增加length的值:@Column(length = 值)
这个bug我遇到过,当时也是这么解决的。


  1. 设置为tinyint(1),返回值为false/true。

此处可以修改为tinyint(4),长度为4。
或者将JDBC的URL增加 tinyInt1isBit=false参数,注意参数名区分大小写,否则不生效。这个方法我没尝试,有没有效果目前不知道。
jdbc:mysql://host:port/db?tinyInt1isBit=false

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值