Spring Repository 删除规范

Jay*_*son 7 java spring spring-data-jpa

SpringCrudRepository提供了一些删除方法,而JpaSpecificationExecutor没有。我想根据 a 删除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 ...)。这工作正常,但我想重用其他代码而不必手动创建查询。
  • 获取实体然后删除它们。当可以一次性完成时,这似乎是一种获取然后删除的浪费。

小智 1

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

  • 您将获取所有实体,然后删除它们。有没有办法直接删除呢? (3认同)