java - Spring Repository 删除规范

标签 java spring spring-data-jpa

Spring 的CrudRepository提供了一些删除方法,而 JpaSpecificationExecutor才不是。我想根据 Specification 删除——就像我在做查询一样。有没有办法做到这一点?

理由:我想确保用户在删除期间拥有资源,而不是允许根据 id 直接访问资源(参见 https://www.owasp.org/index.php/Top_10_2013-A4-Insecure_Direct_Object_References)。

我看到的选项:

  • 使用 @Query在存储库中的自定义删除方法上。类似 delete from Entity e where e in (select e from Entity e where ...) .这工作正常,但我想重用其他代码而不必手动创建查询。
  • 获取实体然后删除它们。当可以一次性完成时,这似乎是一种获取然后删除的浪费。
  • 最佳答案

    它的简单你可以使用 List<YourReturnType> result = yourRepository.findAll(specification);查询您的记录,然后使用 yourRepository.deleteAll(result);删除所有这些记录。

    关于java - Spring Repository 删除规范,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35303043/

    相关文章:

    java - Spring/JPA项目无法找到逻辑名称为: email的列

    java - Spring @JsonIgnore 序列化未按预期工作

    java - Gson 如何将接口(interface)反序列化为特定实现?

    java - 创建一个无法 Autowiring 的 Spring bean

    java - java中有没有用于单位转换的库?

    java - spring security如何保存RedirectUrl

    java - JPA如何获取持久化对象自动生成的ID?

    java - Spring 启动: @GetMapping with Pageable as request parameter don't work as expected

    java - SerialPortEventListener 实现

    java - 在 Firebase 中公开我的服务帐户凭据会具体暴露什么?