Spring Boot Data PropertyReferenceException问题排查求助(非拼写错误)
问题解答:Spring Data JPA 查询方法异常的排查方向
一、最可能的低级错误:方法名大小写问题
Spring Data JPA对查询方法的命名规则有严格要求,前缀必须是小写的find,而你写的是:
Game FindByName(String name);
这里的Find首字母大写了,不符合框架的命名规范,导致无法识别查询规则。改成下方格式即可修复:
Game findByName(String name);
这是极易被忽略的细节,很多人都会因大小写不符合规范踩坑。
二、其他潜在诱因
- 实体类字段映射不明确:你的
created_date字段未指定@Column(name = "created_date"),虽然这不会直接影响name字段的查询,但如果数据库中该字段名和属性名不匹配(比如实际是createddate),可能导致Hibernate元数据解析异常,建议补充明确的列名映射:@Column(name = "created_date", insertable = false) private Date created_date; - Repository扫描范围问题:检查项目启动类上的
@EnableJpaRepositories注解,确认它的basePackages属性包含了GameRepo所在的包路径。即使POM相同,不同项目的包结构可能不同,导致Repository未被正确扫描加载。 - 数据库Schema匹配问题:虽然两个项目连接同一个Postgres实例,但当前项目使用的Schema可能和正常项目不一致,导致找不到
game表。可以通过查看SQL日志确认实际执行的SQL语句中的表路径。 - 查询结果唯一性问题:如果数据库中存在多条
name相同的记录,单个Game的返回值会触发NonUniqueResultException。如果你的场景允许多个同名记录,建议把返回值改成List<Game>:List<Game> findByName(String name);
内容的提问来源于stack exchange,提问作者Ian
相关产品推荐
相关产品推荐

