繁体   English   中英

为什么 spring 数据中的 deleteBy 方法仅适用于 GET 请求

[英]Why does deleteBy methods in spring data work only with GET requests

我正在使用 Spring 数据 Rest 我有一个实体员工

public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private int id;
@Column(name = "first_Name")
@com.luv2code.springboot.demo.BootDataRest2.Validators.Employee
private String firstName;
@Column(name = "last_name")
private String lastName;
@Column(name = "email")
@NotBlank(message = "Email is mandatory")
@Email()
private String email;}

并尝试通过扩展 JpaRepository 按 firstName 删除,如下所示。

@RepositoryRestResource( collectionResourceRel = "employees")
public interface EmployeeRepository extends JpaRepository\<Employee,Integer\> {

    @Modifying
    @Transactional
    public int deleteByFirstName(String firstName);
    
    @Query(value = "SELECT e FROM Employee e where e.firstName like %?1% or e.lastName like %?1%")
    public List<Employee> searchWithAny(String searchText);

}

仅当我将 postman 中的方法类型标识为 GET 时,该代码才有效,如果选择的方法类型为 DELETE,我得到 404 NOT FOUND。

我不知道这是默认的 spring 数据行为还是我遗漏了什么。

添加 URL 在搜索资源“http://localhost:8888/employees/search/deleteByFirstName%7B?firstName}”下可用

你得到一个404 NOT FOUND因为 Spring 数据 Rest 没有公开你的自定义删除方法。 在文档中可以看到,Spring在资源基础上只暴露了以下三个方法:

  • delete(T)
  • delete(ID)
  • delete(Iterable)

据我所知,不可能公开自定义删除方法,至少我无法实现它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM