当Get请求不是Id时,获取此异常:未能将java.lang.String类型的值转换为所需的java.lang.Long类型
在我的SpringBoot代码中,当我使用Get-request-for-user/{id}时工作正常,但是当使用request-user/modelname时 我得到了一个例外: 无法将“java.lang.String”类型的值转换为所需类型 'java.lang.Long' carController.java当Get请求不是Id时,获取此异常:未能将java.lang.String类型的值转换为所需的java.lang.Long类型,java,spring-boot,Java,Spring Boot,在我的SpringBoot代码中,当我使用Get-request-for-user/{id}时工作正常,但是当使用request-user/modelname时 我得到了一个例外: 无法将“java.lang.String”类型的值转换为所需类型 'java.lang.Long' carController.java @GetMapping("/user/{id}") public Car getUser(@PathVariable Long id) { return c
@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);
}
您的请求未到达
@GetMapping(“/user/modelname”)
。它总是转到@GetMapping(“/user/{id}”)
,只是因为它满足了条件。
尝试将url更改为类似以下内容的其他内容
@GetMapping(“/users/modelname”)
并进行检查,它肯定会命中。是的,具体如何解决此问题。jpaRepository将创建findByModelname()方法。请尝试将url更改为其他类似用户的url@GetMapping(“/users/modelname”)我已更改为@GetMapping(“/users/modelname”)……现在,如果我像users/s2一样搜索未找到状态404数据,如果要传递动态modelname,请将@GetMapping(“/users/modelname”)更改为@GetMapping(“/users/{modelname}”)。。并通过将requestbody更改为pathvariable来实现getUser()方法。
import org.springframework.data.jpa.repository.JpaRepository;
public interface CarRepository extends JpaRepository<Car, Long>{
public List<Car> findByModelname(String modelname);
}
@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() {
}
}