Spring Boot JPA运行报错Failed to create query for method问题求助
错误根因
Spring Data JPA的方法名查询规则会严格匹配实体类的属性名拼写与大小写:
- 你的
Department实体类中主键属性命名为departmentid(所有字母小写无驼峰) - 但
DepartmentRepository中定义的查询方法为findByDepartmentId,JPA会自动将方法名解析为查找属性名为departmentId(驼峰格式,首字母d小写、I大写)的字段,实体中不存在该属性,因此抛出匹配失败异常。
解决方案(二选一即可,推荐第二种符合Java命名规范)
方案1:修改Repository方法名适配现有实体属性
将DepartmentRepository中的方法修改为和实体属性完全一致的拼写:
Department findByDepartmentid(long departmentid);
方案2:修改实体属性为标准驼峰命名(推荐)
把Department实体的主键属性修改为标准驼峰格式,原有Repository方法不需要改动:
@Id @GeneratedValue(strategy = GenerationType.AUTO) private long departmentId;
额外注意事项
你的DepartmentController中@GetMapping("{id}")的路径变量名和方法参数名不匹配,可能会引发后续参数绑定异常,建议修改为:
@GetMapping("{departmentid}") public Department finddepartmentbyid(@PathVariable long departmentid)
或者给@PathVariable指定绑定的路径变量名:
@GetMapping("{id}") public Department finddepartmentbyid(@PathVariable("id") long departmentid)
内容的提问来源于stack exchange,提问作者Prudhvi
相关产品推荐
相关产品推荐

