首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Spring数据:支持“删除依据”吗?

Spring数据:支持“删除依据”吗?
EN

Stack Overflow用户
提问于 2014-05-18 22:31:06
回答 8查看 194.5K关注 0票数 114

我正在使用Spring JPA进行数据库访问。我能够找到像findByName和countByName这样的例子,我不需要为它们编写任何方法实现。我希望能找到基于某些条件删除一组记录的例子。

Spring JPA是否支持类似deleteByName的delete?任何指针都是可取的。

致以问候和感谢。

EN

回答 8

Stack Overflow用户

发布于 2014-05-19 14:31:21

从Spring Data JPA的1.6.0.RC1版本开始,支持使用给定方法名称派生delete查询。支持关键字removedelete。作为返回值,用户可以在删除的实体的数量或列表之间进行选择。

Long removeByLastname(String lastname);

List<User> deleteByLastname(String lastname);
票数 84
EN

Stack Overflow用户

发布于 2019-11-05 18:31:04

两种方式:

第1个自定义查询

@Modifying
@Query("delete from User where firstName = :firstName")
void deleteUsersByFirstName(@Param("firstName") String firstName);

第二个按方法的JPA查询

List<User> deleteByLastname(String lastname);

当你使用query by方法(第二种方法)时,它将首先执行get调用

select * from user where last_name = :firstName

然后,它会将其加载到列表中,然后逐个调用delete id。

delete from user where id = 18
delete from user where id = 19

首先获取对象列表,然后使用for循环逐个删除id

但是,第一个选项(自定义查询)

这只是一个查询,它将删除任何存在该值的查询。

由于在第二个选项中是进行多个数据库查询,请尝试使用第一个选项。

也可以通过此链接访问https://www.baeldung.com/spring-data-jpa-deleteby

票数 10
EN

Stack Overflow用户

发布于 2014-05-18 23:46:36

如果您查看一下Spring Data JPA的源代码,特别是PartTreeJpaQuery类,您将看到它试图实例化PartTree。在该类内部,使用以下正则表达式

private static final Pattern PREFIX_TEMPLATE = Pattern.compile("^(find|read|get|count|query)(\\p{Lu}.*?)??By")

应该指出什么是允许的,什么不是。

当然,如果您尝试添加这样的方法,您实际上将看到它不起作用,并且您将获得完整的堆栈跟踪。

我应该注意到,我使用的是Spring Data JPA的1.5.0.RELEASE版本

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23723025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档