使用@RepositoryRestResource时无报错但查询不到数据问题求助
问题排查与解决方案
1. 校验访问端点路径是否正确
你在@RepositoryRestResource中配置的path = "product",最终暴露的访问端点规则为:http://{服务IP}:{服务端口}/{Spring Data REST基础路径}/product
- 如果你在配置文件中设置了
spring.data.rest.base-path参数,需要在路径中拼接该基础路径,否则直接访问/product会返回空结果或404。
2. 排查DAO层本身的查询能力
先脱离Spring Data REST的封装,直接校验Repository的查询能力:
- 编写单元测试注入
ProductRepository,调用findAll()方法查看是否能返回数据 - 开启JPA SQL日志打印(配置
spring.jpa.show-sql=true),确认生成的查询SQL是否符合预期,手动执行该SQL查看是否能从数据库查到数据 - 确认
Product实体类映射正确:必须标注@Entity注解,主键字段必须标注@Id,字段、表名映射要和数据库一致。
3. 核对MyDataRestConfig配置
检查配置类中是否存在限制返回结果的规则:
- 是否配置了错误的Repository扫描包路径,导致
ProductRepository未被扫描到 - 是否设置了分页默认参数错误,比如
defaultPageSize=0会强制返回空列表 - 是否配置了返回字段过滤规则,把所有字段都排除导致返回空结构。
4. 其他常见原因
- 确认数据库连接配置正确:没有连错测试库/空库,目标
product表中确实存在有效数据 - 接口返回的JSON结构中,集合数据默认放在
_embedded节点下,你配置的collectionResourceRel = "product",所以实际数据在_embedded.product下,不要找错节点误以为没有数据 - 确认项目已引入
spring-boot-starter-data-rest依赖,否则@RepositoryRestResource注解不会生效,接口不会自动暴露。
内容的提问来源于stack exchange,提问作者Craig
相关产品推荐
相关产品推荐

