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

Spring Boot中Lombok注解实体无法序列化问题求助

问题分析与解决方案

1. 核心错误:控制器方法写在了实体类里

你把带@PostMapping的接口方法直接放在Employee实体类里了,这完全不符合Spring MVC的规范——实体类只负责存数据,控制器得是单独被@RestController/@Controller标记的类,两者不能混在一起。这也是导致序列化失败的首要原因。

修正操作:拆分控制器和实体类

  • Employee实体类(只保留数据相关代码):
@Entity
@Data
@AllArgsConstructor
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class Employee extends BaseDomain {

    private String firstName;
    private String middleName;
    private String lastName;
    private String email;
    private String mobileNo;
}
  • 单独的Employee控制器类:
@RestController
@RequestMapping("/employees")
public class EmployeeController {

    private final EmployeeService employeeService;
    private final Logger log = LoggerFactory.getLogger(EmployeeController.class);

    // 用构造注入,Spring推荐的方式
    public EmployeeController(EmployeeService employeeService) {
        this.employeeService = employeeService;
    }

    @PostMapping
    public Employee saveEmployee(@RequestBody Employee employee) {
        log.debug("Employee save {}", employee);
        return employeeService.saveOrUpdateEmployee(employee);
    }
}

这里必须加@RequestBody注解——它是Spring把POST请求的JSON请求体转成Java对象的关键,之前的代码缺了这个,就算控制器位置对了也没法正确序列化。

2. 其他可能的序列化问题排查点

  • 检查BaseDomain的序列化配置:如果父类BaseDomain里有日期、自定义类型这类字段,要给它们加Jackson注解(比如@JsonFormat处理日期格式),同时确保父类有getter/setter(可以加@Data注解),Jackson序列化/反序列化依赖这些方法。
  • 版本兼容性:确保项目里Spring Boot的Jackson依赖和Lombok版本匹配,尽量用Spring Boot父依赖统一管理版本,减少冲突。
  • 请求头设置:发POST请求时,要把Content-Type设为application/json,不然Spring没法识别请求体格式,自然转不成Employee对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 17:09:48