You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot 3.1.3中JpaRepository的PUT/PATCH方法默认无法使用的解决方法

解决Spring Boot 3.1.3中Spring Data Rest PUT/PATCH方法不可用的问题

问题根源及解决方案

1. 修正请求路径

你的EmployeeRepository通过@RepositoryRestResource(path = "members")将资源路径指定为/members,但错误日志显示请求路径是/employees,这是路径不匹配导致的404错误。

  • 正确的PUT请求路径:PUT /members/{id}(全量更新指定ID的员工)
  • 正确的PATCH请求路径:PATCH /members/{id}(部分更新指定ID的员工)

2. 为实体类添加Getter和Setter方法

你提供的Employee实体类仅包含构造器,缺少属性的Getter和Setter方法。Spring Data Rest在处理PUT/PATCH请求时,需要通过这些方法访问或修改实体属性,没有它们会导致更新逻辑无法执行。

修改后的实体类示例:

@Entity
@Table(name = "employee")
public class Employee {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private int id;
    @Column(name = "first_name")
    private String firstName;
    @Column(name = "last_name")
    private String lastName;
    @Column(name = "email")
    private String email;

    public Employee() {
    }

    public Employee(String firstName, String lastName, String email) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.email = email;
    }

    // 添加所有属性的Getter和Setter
    public int getId() {
        return id;
    }

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

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

如果不想手动编写Getter/Setter,可以使用Lombok的@Data注解简化(需先引入Lombok依赖):

@Entity
@Table(name = "employee")
@Data
public class Employee {
    // 原有代码不变
}

3. 确认JpaRepository的Save方法有效性

JpaRepository继承自CrudRepository,自带的<S extends T> S save(S entity)方法完全满足Spring Data Rest对PUT/PATCH的要求,无需额外定义。PUT请求会通过该方法执行全量替换,PATCH请求会先查询实体、更新指定属性后再调用该方法保存。

完成以上调整后,PUT和PATCH方法即可正常使用。

内容的提问来源于stack exchange,提问作者Kaliyug Antagonist

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 16:25:08