Spring存储库删除规范

时间:2016-02-09 22:00:11

标签: 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 ...)这样的东西。这很好用,但我想重新使用其他代码,而不必手动创建查询。
  • 获取实体然后删除它们。如果可以一次完成,这对于获取然后删除似乎是浪费。

1 个答案:

答案 0 :(得分:0)

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