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

Spring MVC中EmployeeDetailController表单提交404无法写入数据库问题

问题根因排查结果

1. 核心问题:EmployeeDetail实体类缺失无参构造函数

Spring MVC通过@ModelAttribute绑定表单数据到实体类时,必须调用实体类的无参构造函数先实例化对象。你当前只自定义了有参构造函数,Java不会默认生成无参构造,导致Spring无法实例化EmployeeDetail对象,参数绑定失败,请求无法匹配到对应的PostMapping接口,最终返回404错误。这也对应了你观察到的「EmployeeDetail有参构造从未被调用」的现象。

2. 次要隐患:employee_detail表主键未赋值

你的employee_detail表主键employee_detail_id是关联employee表的外键,没有设置自增属性。如果提交表单时没有主动给EmployeeDetail的主键属性赋值,即使解决了构造函数问题,写入数据库时也会抛出主键非空约束异常。


解决方案

第一步:给EmployeeDetail实体类添加无参构造函数

public EmployeeDetail() {
}

如果使用Lombok,可以直接加@NoArgsConstructor注解简化代码。

第二步:补充主键赋值逻辑

新增EmployeeDetail时,需要先选择关联的已有Employee,将Employee的id赋值给EmployeeDetail的主键属性后再存入数据库,或者调整实体类的关联配置,通过OneToOne注解自动关联维护外键值。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 12:15:03