当前位置: 首页 > 知识库问答 >
问题:

在Spring Data JPA中,如何处理IDs数组的批量删除?

乐正瑞
2023-03-14
@Transactional
@Override
public void deleteUser(Integer id) {

    oneRepository.delete(id);
}


@Transactional
@Override
public void deleteSomeUser(Integer[] ids) {

    for (Integer id : ids) {

        deleteUser(id);

    }

}

我想知道这是否是一个更有效的方法来完成这个动作。

你可以看到我的日志:似乎不太好!

[94, 95, 91, 92, 93]
Hibernate: 
    delete 
    from
        sshh_user 
    where
        ID=?


Hibernate: 
    delete 
    from
        sshh_user 
    where
        ID=?



Hibernate: 
    delete 
    from
        sshh_user 
    where
        ID=?



Hibernate: 
    delete 
    from
        sshh_user 
    where
        ID=?



Hibernate: 
    delete 
    from
        sshh_user 
    where
        ID=?



Hibernate: 
    select
        count(practice0_.ID) as col_0_0_ 
    from
        sshh_user practice0_

共有1个答案

云航
2023-03-14

只需将以下内容添加到用户存储库接口

void deleteByIdIn(List<Integer> ids);

Spring将通过方法名派生自动生成适当的查询。

https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods

为了手动添加一些简单的查询,比如搜索用户名或邮件地址,spring提供了一个很好的机制,无需注释任何基于字符串的HQL查询或类似的查询。

Spring只是分析方法名,搜索关键字。阅读上面提供的关键字的文档链接。

CrudRepository 的示例方法:

更新:

这将只作为一个真正的批量删除在Spring引导版本<2.0!

自Spring Boot2.0以来,它将导致单个删除查询来执行JPA实体生命周期事件,如preemovepostremove

 类似资料:
  • 主要内容:创建一个数组,访问数组,修改数组,迭代数组,数组的长度,在数组中创建结构数组类型并没有明确定义为批处理脚本中的类型,但可以实现。 在批处理脚本中实现数组时需要注意以下几点。 数组中的每个元素都需要用命令来定义。 循环将需要遍历数组的值。 创建一个数组 一个数组是通过使用下面的命令创建的。 其中是数组的索引,是分配给数组的第一个元素的值。 另一种实现数组的方法是定义一个值列表并遍历值列表。 以下示例显示了如何实现。 示例 以上命令产生以下输出 - 访问数组 可以使用下标

  • 问题内容: 我想知道如何以n为一组进行ajax调用。 这是我的用例: 我有一个显示使用情况数据的表。您可以钻取每一行,如果每行都有一个可以更深入钻取的公共属性,则可以选择一次钻取所有它们。对于每一行,都会进行ajax调用以获取要附加到表中的数据。 在某些情况下,最多可以同时钻取50行。可以想象,这给服务器带来了很大压力。我如何最好地以较小的批次发送这些呼叫,这些呼叫在等待这些批次之后才能启动? 我

  • 我的数据库中有大约1000万个blob格式的文件,我需要转换并以pdf格式保存它们。每个文件大小约为0.5-10mb,组合文件大小约为20 TB。我正在尝试使用spring批处理实现该功能。然而,我的问题是,当我运行批处理时,服务器内存是否可以容纳那么多的数据?我正在尝试使用基于块的处理和线程池任务执行器。请建议运行作业的最佳方法是否可以在更短的时间内处理如此多的数据

  • 我有一个批处理文件,它运行了几个执行表修改的python脚本。 是否有更恰当地添加注释的语法?

  • 问题内容: 我如何创建一个CI批处理插入数组,就像 从我的正常数组是 问题答案: 尝试这个: 欲了解更多信息,请点击这里

  • 下面是一个java类CreateDoc,它从一个作为生产者端的web服务发送到另一个作为消费者端的web服务,其内容类型为:json 下面是类表示 一旦我在消费者端接收到作为json的列表,我就不能将其用作java对象,并且内容类型是数组,其中json嵌套在数组中。 以下是代表: 问题是如何处理这一点,并能够使用数据和表示为列表。