java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long,使用缓存时导致数据类型返回不一致

我们先来看看具体的情况,我在该方法上面使用了缓存。将查询出来的MedicalId进行缓存,但是当第二次调用该方法时,从缓存中取出数据之后报错信息为java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long。下面是一个demo

其实这个是因为当前你的代码层面都是将ID作为Long类型进行处理的,但是由于你的Long比较小,例如手动添加了一写数据,id比较小,存入缓存时仅仅将数字存入,丢失了数据类型,反序列化的时候,自动识别为了Integer,但是你的程序中全程作为Long进行处理,因此有了该异常

这可能是redis的一部分问题所在吧

希望能够帮到大家

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值