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

Spring Boot+RestAPI+JPA+MySQL实现CRUD启动报错求助

问题排查及解决方案

核心错误根因

从报错日志Caused by: org.springframework.data.mapping.PropertyReferenceException: No property addMovie found for type Movie!可以直接定位到问题出在JPA Repository层,共有3处需要修改:

1. 删除Repository中多余的自定义方法

Spring Data JPA会自动根据接口方法名推导查询逻辑,你声明的addMovie方法不属于JPA约定的查询命名规则,框架会误将addMovie识别为Movie实体类的属性去匹配,导致报错。
且CrudRepository已经内置了save()方法用于新增/更新数据,不需要自行定义新增方法,直接删除IMovieRepo接口中如下代码即可:

public Movie addMovie(String movieName,Integer rating,String Genre);

2. 修正CrudRepository泛型主键类型

CrudRepository的第二个泛型参数是实体类主键的类型,你的Movie实体主键mNo为String类型,但当前Repository定义写的是Integer,类型不匹配会导致后续数据库操作报错。
修改IMovieRepo的继承声明:

public interface IMovieRepo extends CrudRepository<Movie, String>{
    // 无需额外自定义新增方法,直接用继承的save()即可
}

3. 补全application.properties的JPA必要配置

当前配置缺少JPA和MySQL驱动的必要参数,会导致连接数据库、表结构映射异常,补充如下配置:

# 配置MySQL驱动类(mysql 8.x+版本用cj下的Driver)
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# 补充时区参数避免时区异常
spring.datasource.url=jdbc:mysql://localhost:3306/sakila?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
# 配置JPA自动更新表结构,可选值:none/create/create-drop/update/validate
spring.jpa.hibernate.ddl-auto=update
# 开启SQL打印方便调试
spring.jpa.show-sql=true
# 配置MySQL方言
spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect

验证方式

修改完成后重启项目,请求POST http://localhost:8082/Restful-App-Movies/movies/add/,请求体传入:

{
    "mNo": "M001",
    "mName": "泰坦尼克号",
    "rating": 9,
    "genre": "爱情"
}

即可正常插入数据到数据库。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 14:54:06