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

Java+Spring Boot项目POST写入MySQL失败返回500错误

问题根因

两个报错中,no such instance field: 'requestActive'是IntelliJ IDEA调试器的已知兼容问题,和业务代码无关,不会触发接口500,清理IDEA缓存重启调试即可消除,无需修改业务代码。
真正导致POST请求返回500的是org.hibernate.exception.GenericJDBCException: could not execute statement,即Hibernate执行插入SQL语句失败。GET请求可正常运行说明数据库连接本身正常,问题集中在实体映射、表结构匹配、实体类定义环节,按以下步骤排查修复即可。

修复步骤
  • 检查JPA表结构自动同步配置
    打开项目的application.properties或application.yml配置文件,确认spring.jpa.hibernate.ddl-auto配置项,开发环境可设置为update,让Hibernate自动根据当前Movie实体类生成、更新对应表结构。你将原教程的Employee实体替换为Movie后,如果该配置为validate或none,数据库中不存在匹配Movie实体的表、字段,执行插入时就会抛出SQL执行错误。
  • 补全实体类必要定义
    你贴出的Movie类仅展示了字段部分,需要逐一确认:
    1. 类上添加了@Entity注解,标记该类为JPA持久化实体
    2. 存在无参公共构造方法,JPA要求所有实体类必须提供无参构造器才能正常实例化
    3. 所有字段都有对应的getter/setter方法,尤其是Service层调用的setMovieCode()方法;如果使用Lombok简化代码,需要在类上添加@Data注解,否则会出现属性赋值失败、插入SQL参数缺失的问题
  • 修正Repository层方法注解
    你定义的deleteMovieById属于数据修改类操作,需要在方法上添加@Transactional注解,否则JPA运行时会抛出事务缺失错误,该问题不会直接影响新增操作,但后续调用删除接口时会触发报错。
  • 校验Postman请求格式
    发起POST请求时,请求头需设置Content-Type: application/json,请求体选择raw格式的JSON,不需要传入后端自动生成的id、movieCode字段,参考格式:
{
    "name": "示例电影",
    "email": "test@demo.com",
    "jobTitle": "科幻",
    "phone": "13800000000",
    "imageUrl": "/img/test.jpg"
}
验证方法

修改完以上配置后重启项目,再次发起POST请求,若控制台无JDBC异常打印,且接口返回201状态码与新增的电影信息,即说明问题修复。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 22:48:36