Spring中如何按指定id查询数据?查询返回404错误如何解决
问题原因及修复方案
- 类上路径映射缺少前置斜杠
你当前Controller的@RequestMapping注解写的是@RequestMapping("api/v1"),没有以/开头,部分Spring版本不会自动补全路径前缀,导致实际可访问的接口路径是api/v1/userlist/{value}(无前置斜杠),和你调用的/api/v1/userlist/{value}不匹配,触发404。
修复方式:把类上的注解修改为@RequestMapping("/api/v1") - 传参类型不匹配
你的接口路径变量value定义的是int类型,如果你调用时传入了非数字格式的参数,Spring无法匹配到对应接口,也会返回404。修复方式:调用时确保传入的是数字类型的参数,比如你现有数据的user_id是10,调用/api/v1/userlist/10即可。 - 上下文路径配置问题
如果你的application.yml/application.properties中配置了server.servlet.context-path属性(比如配置为/myproject),那么实际访问路径需要加上上下文前缀,即/myproject/api/v1/userlist/10。
其他潜在问题修复
你当前的代码还有后续可能触发报错的问题,建议同步修改:
- Repository方法的参数类型和数据库user_id类型不匹配,你的JpaRepository主键定义为Long类型,建议把
getUserDetails(int value)修改为getUserDetails(Long value),同时Controller层的@PathVariable int value同步修改为@PathVariable Long value,避免类型转换异常。 - 确保你的
Users实体类字段和数据库字段映射正确,比如数据库的first_name、user_id字段,需要在实体类对应属性上添加@Column(name = "first_name")、@Column(name = "user_id")注解,否则查询返回的结果对应字段会为空。
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

