java - 当 Get 请求不是 Id 获取此异常时:无法将 java.lang.String 类型的值转换为所需的 java.lang.Long 类型
问题描述
在我的 SpringBoot 代码中,当我使用获取用户/{id} 的请求时工作正常,但使用请求用户/模型名时。
我得到了例外:
无法将“java.lang.String”类型的值转换为所需的“java.lang.Long”类型;
汽车控制器.java
@GetMapping("/user/{id}")
public Car getUser(@PathVariable Long id) {
return carRepository.findOne(id);
}
@GetMapping("/user/modelname")
public List<Car> searchUserByModel(@RequestBody String modelname) {
return carRepository.findByModelname(modelname);
}
carRepository.java
import org.springframework.data.jpa.repository.JpaRepository;
public interface CarRepository extends JpaRepository<Car, Long>{
public List<Car> findByModelname(String modelname);
}
汽车.java
@Entity
public class Car {
@Id
@GeneratedValue
private Long id;
private String modelname;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getModelname() {
return modelname;
}
public void setModelname(String modelname) {
this.modelname = modelname;
}
public Car(Long id,String modelname) {
this.id=id;
this.modelname = modelname;
}
@Override
public String toString() {
return "Car [id=" + id + ", modelname=" + modelname +"]";
}
public Car() {
}
}
解决方案
您的请求未达到@GetMapping("/user/modelname")
。它总是@GetMapping("/user/{id}")
只会因为它满足条件。尝试将 url 更改为类似的其他内容@GetMapping("/users/modelname")
并检查,它肯定会命中。
推荐阅读
- android-studio - Android Studio 无法打开模拟器并显示“invalid GPU mode 'angle9';
- reactjs - 单击提交按钮后如何使用react重置表单?
- wordpress - How to move sidebar when scrolling
- vue.js - 如何在我的 vuejs 方法中使我的 for 循环递增 ^
- c++ - How can I use subsystem default as empty value in Visual studio 2017
- java - 用于识别回文数的 Java 项目返回 false 并匹配输出
- python-3.x - 如果在另一列中满足条件,则将一个值除以另一个值
- java - 创建一个类数组,然后从中实例化对象
- asp.net - ASP.NET machinekey settings causing error on Firefox but working on Internet Explorer
- sql - SQL Grouping of Columns Values