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

Spring Boot注册面板提交数据存入数据库出现null值问题求助

问题根因及解决方案

1. 优先检查父类Person的注解配置

Client类继承了Person类,若Person类没有添加@MappedSuperclass注解,JPA不会将父类的属性映射到client表,会直接导致firstName、lastName、email、phoneNumber这些父类属性全部存储为null。
给Person类添加对应注解即可:

@MappedSuperclass
@Getter
@Setter
public class Person {
    // 保留原有属性定义:id、firstName、lastName、email、phoneNumber等
}

同时检查@AttributeOverrides里配置的属性名和父类的实际属性名是否完全一致,比如你配置的name="Id"如果父类实际是小写的id,就会导致映射错误,出现重复字段。

2. 检查RegistrationDTO的Getter/Setter配置

如果RegistrationDTO没有添加Lombok的@Data注解,也没有手动编写对应属性的get、set方法,Spring MVC无法将前端表单的参数绑定到DTO对象中,所有属性都会是null,存入数据库自然为空。
给RegistrationDTO添加@Data注解即可:

@Data
public class RegistrationDTO {
    // 保留原有属性定义
}

3. 检查前端表单字段名和DTO属性名是否匹配

前端registration.html里表单的name属性必须和RegistrationDTO的属性名完全一致,比如DTO里叫firstName,表单对应input的name就不能写成first_name或者firstname,否则绑定失败参数为空。

4. 修复字段映射不匹配问题

你Hibernate打印的insert语句里,字段列表只有10个字段,但values后面有12个占位符,说明实体类字段映射重复:

  • 检查Client类和Person类有没有重复定义同名字段
  • 检查@AttributeOverrides的配置是否正确,避免重复生成字段

5. 非空字段补充赋值

你当前构造Client对象用的是7参数的构造方法,age和gender两个字段没有赋值,如果这两个字段是业务需要非空的,要么在构造方法里传入对应值,要么设置默认值,否则这两个字段存为null属于正常现象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 13:36:06