【发布时间】: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 ...)。这很好用,但我想重复使用其他代码,而不必手动创建查询。 - 获取实体然后删除它们。如果可以一次性完成,这似乎很浪费。
【问题讨论】:
-
@leeor 是的,这是使用自定义的
@Query,它可以工作,但我想重新使用Specification,它用于所有其他查询方法。
标签: java spring spring-data-jpa