【问题标题】:Spring Repository Delete With SpecificationSpring存储库删除规范
【发布时间】:2016-05-20 02:05:27
【问题描述】:

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

【问题讨论】:

标签: java spring spring-data-jpa


【解决方案1】:

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

【讨论】:

  • 您将获取所有实体,然后将其删除。有没有办法直接删除?
猜你喜欢
  • 2017-02-24
  • 2011-01-14
  • 1970-01-01
  • 2020-01-21
  • 2021-07-06
  • 2010-12-02
  • 1970-01-01
  • 2011-01-09
  • 1970-01-01
相关资源
最近更新 更多