当Get请求不是Id时,获取此异常:未能将java.lang.String类型的值转换为所需的java.lang.Long类型

当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

在我的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 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() {
    }
}