Spring Data JPA
文档告诉我们,我们可以使用delete
功能的派生方法。然后文档给出的示例为:
interface UserRepository extends CrudRepository<User, Long> {
long deleteByLastname(String lastname);
List<User> removeByLastname(String lastname);
}
我发现令人困惑的是removeByLastname
。 CrudRepository
具有以delete
字开头的delete
方法,没有以remove
开头的方法。我们是否有以remove
开头的方法?如果是,何时以及如何使用它们。
文档链接:https://docs.spring.io/spring-data/jpa/docs/2.1.2.RELEASE/reference/html/
答案 0 :(得分:1)
它们可以以相同的方式使用。您可以命名方法以remove
或delete
开头。有关删除模式,请参见PartTree类:
private static final String DELETE_PATTERN = "delete|remove";
答案 1 :(得分:1)
在生成存储库实现时,Spring Data会检查任何方法
在存储库界面中,解析方法名称,并尝试了解
持久对象上下文中方法的目的。在
本质上,Spring Data定义了一种微型领域特定语言(DSL)
持久性详细信息在存储库方法签名中表示。
remove
和delete
之间没有区别。您可以使用其中任何一个。相同
与find
get
read
答案 2 :(得分:0)
我相信他们正在使用List<User> removeByLastname(String lastname);
,因为已经有long deleteByLastname(String lastname);
并且您不能拥有一个具有相同名称和参数的函数
在现代版本的Spring Data JPA(> = 1.7.x)中,可以进行删除和删除操作的查询派生
https://www.logicbig.com/tutorials/spring-framework/spring-data/jpa-derived-delete-queries.html