[英]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.