redis反序列化为什么报错 Could not read JSON: Invalid type id ?
Could not read JSON: Invalid type id 'com.salesforce.potentialCustomers.entity.PotentialCustomers_$$_jvst568_0' (for id type 'Id.class'): no such class found
使用 GenericJackson2JsonRedisSerializer 进行序列化!key 不存在时,新增不会有问题,新增完 key 也可以正常反序列化,然后重启服务再次获取 key 进行反序列化就会报错!哪位大佬提供下解决思路!感激不尽!
实体类
ID 这个属性在 DataEntity 中
回答:
没见过你这种写法 为什么继承类得泛型还是自己这个类 不会出现问题吗
回答:
正常GenericJackson2JsonRedisSerializer序列化,会增加@class属性用于反序列化,
值是对象的包+类名,例如你这里正常应该是
’@class‘:’com.salesforce.potentialCustomers.entity.PotentialCustomers‘
但你实际存入的值是类名加了后缀,这种格式一般是指jvm中的实例地址
看你的截图,实际序列化的对象是ArrayList<Pxxxx>,所以大概率问题在JSON序列化集合结构时发生了问题,获取集合元素时,使用了实例的toString获取到了实例名称,还不是类的名称。
底层进行这个操作的是jackson的objectmapper,正常来说是不会发生这种情况的,这里看一下是不是对spring自带jackson的objectMapper进行了自定义覆盖,尤其是对集合对象转json时,元素的type是否有特殊处理。
回答:
GenericJackson2JsonRedisSerializer与mybatis的懒加载存在冲突。mybatis懒加载会使用handler进行对象代理,所以类名后会多一串乱码,重启后无法找到对应类。
以上是 redis反序列化为什么报错 Could not read JSON: Invalid type id ? 的全部内容, 来源链接: utcz.com/p/944811.html