【问题标题】:Provided id of the wrong type SpringBoot提供了错误类型 Spring Boot 的 id
【发布时间】:2021-05-24 21:41:46
【问题描述】:

我正在创建一个简单的 crud 项目,其中 spring boot 与 postman 关联。我可以成功列出记录。我添加记录成功。当我试图通过邮递员搜索记录时,它不起作用。我得到的错误是邮递员为 class com.example.demo1.Entity.Student 提供了错误类型的 id。预期:类 java.lang.Integer,得到类 java.lang.Long 邮递员我到目前为止所尝试的我附在下面。

学生

@Entity
@Table(name="Records")
public class Student 
{   
    @Id
    @Column(name="id")
     @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    
    @Column(name="fname")
    private String fname;
    
    @Column(name="lname")
    private String lname;
    
    @Column(name="city")
    private String  city;
    
    
    @Column(name="phone")
    private String phone;
    
    @Column(name="salary")
    private String salary;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getFname() {
        return fname;
    }

    public void setFname(String fname) {
        this.fname = fname;
    }

    public String getLname() {
        return lname;
    }

    public void setLname(String lname) {
        this.lname = lname;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getSalary() {
        return salary;
    }

    public void setSalary(String salary) {
        this.salary = salary;
    }

存储库

@Repository
public interface Studentrepository extends CrudRepository<Student,Long> {
    

}

服务

//getting a specific record by using the method findById() of CrudRepository  
         public Student getStudentById(long id)   
         {  
         return repo.findById(id).get();  
         }
    

控制器

//creating a get mapping that retrieves the detail of a specific book  
     @RequestMapping("/student/{id}")  
     private Student getBooks(@PathVariable(name = "id") int studentid)   
     {  
     return services.getStudentById(studentid);  
     }  
     

【问题讨论】:

    标签: spring spring-boot postman


    【解决方案1】:

    在您的实体和控制器中,您已将 id 定义为整数。在您的服务中,您接受一个长参数。因此不匹配和错误消息。虽然有时很神秘,但错误消息通常会告诉您哪里出了问题。

    【讨论】:

      【解决方案2】:

      您在实体中将 id 定义为 int,但在您的服务和存储库中您使用的是 long,决定您要使用哪种类型,并在所有类中使用相同的类型。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-10-05
        • 2012-06-04
        • 2012-03-17
        • 2018-04-08
        • 2019-01-05
        • 1970-01-01
        • 2015-01-12
        • 1970-01-01
        相关资源
        最近更新 更多