首页 > 解决方案 > 当 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() {
    }
}

标签: javaspring-boot

解决方案


您的请求未达到@GetMapping("/user/modelname")。它总是@GetMapping("/user/{id}")只会因为它满足条件。尝试将 url 更改为类似的其他内容@GetMapping("/users/modelname")并检查,它肯定会命中。


推荐阅读