You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Redis序列化异常:无法构造Category实例求助

解决思路

核心问题

异常明确指出:Category类缺少可用于反序列化的构造器(无默认构造函数,也没有基于属性/委托的创建器)。因为你用了Lombok的@Builder注解,默认只会生成Builder相关代码,不会生成无参构造函数,而Jackson反序列化时需要构造实例的入口。

具体解决方法

  • 方法一:添加无参构造函数
    给Category和Data类加上@NoArgsConstructor注解,让Lombok生成无参构造函数,满足Jackson的反序列化要求:

    @Builder
    @Getter
    @EqualsAndHashCode
    @ToString
    @NoArgsConstructor // 新增注解
    public class Category {
        private String category;
        private String description;
        private List<Data> data;
    }
    
    @Builder
    @Getter
    @EqualsAndHashCode
    @ToString
    @NoArgsConstructor // 新增注解
    public class Data {
        private int dataId;
        @JsonIgnore
        private Map<String, String> names;
        private String name;
    }
    

    如果需要保留Builder的全参构造能力,可以额外添加@AllArgsConstructor注解,不过这不是必须项。

  • 方法二:让Jackson直接支持Builder模式
    如果你不想添加无参构造函数,可以使用Lombok的@Jacksonized注解(要求Lombok版本≥1.18.14),它会自动配置Jackson使用Builder来创建实例:

    @Builder
    @Getter
    @EqualsAndHashCode
    @ToString
    @Jacksonized // 新增注解
    public class Category {
        // 字段保持不变
    }
    
    @Builder
    @Getter
    @EqualsAndHashCode
    @ToString
    @Jacksonized // 新增注解
    public class Data {
        // 字段保持不变
    }
    

额外配置检查

如果你的代码是直接调用opsForValue().set()存储MainList对象,建议给RedisTemplate补充设置默认序列化器,避免默认序列化器不匹配的问题:

template.setDefaultSerializer(genericJackson2JsonRedisSerializer);

内容的提问来源于stack exchange,提问作者user1555190

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 15:14:55