向后端发送JSON日期时出现400 Bad Request错误求助
问题分析与解决方案
核心问题排查
1. 请求JSON字段名与实体类不匹配
实体类中关联设备的字段名为equipments,但请求JSON里写的是equipment(缺少末尾的s),这会导致Spring无法正确将JSON属性映射到实体类字段,直接触发400参数绑定错误。
修正后的请求JSON:
{ "initialDate": "22/11/2022 08:00", "finalDate": "22/11/2022 08:45", "teacher": { "id": 1 }, "group": { "id": 1 }, "classroom": { "id": 1 }, "equipments": [ { "id": 1 }, { "id": 2 } ] }
2. 实体类@JoinTable注解存在语法错误
实体类中@JoinTable的代码包含冗余无效内容,scheduling_id和equipment_id属于多余字符,正确的注解写法应为:
@ManyToMany @JoinTable(name = "equipments_schedulings", joinColumns = @JoinColumn(name = "scheduling_id"), inverseJoinColumns = @JoinColumn(name = "equipment_id")) private List<Equipment> equipments = new ArrayList<>();
该语法错误会导致编译失败,若未修正会间接影响接口正常运行。
3. 日期格式的额外验证
虽然已配置Jackson的时区和日期格式,但需确保Controller层接收参数时使用了@RequestBody注解,同时检查是否存在其他全局日期格式化配置覆盖了当前实体类的注解设置。若问题仍存在,可尝试在Controller方法上添加@JsonFormat全局配置,或使用@InitBinder自定义日期转换器。
内容的提问来源于stack exchange,提问作者Nikolas Trapp
相关产品推荐
相关产品推荐

