我们先来看看具体的情况,我在该方法上面使用了缓存。将查询出来的MedicalId进行缓存,但是当第二次调用该方法时,从缓存中取出数据之后报错信息为java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long。下面是一个demo
其实这个是因为当前你的代码层面都是将ID作为Long类型进行处理的,但是由于你的Long比较小,例如手动添加了一写数据,id比较小,存入缓存时仅仅将数字存入,丢失了数据类型,反序列化的时候,自动识别为了Integer,但是你的程序中全程作为Long进行处理,因此有了该异常
这可能是redis的一部分问题所在吧
希望能够帮到大家