使用标准API删除吗?

问题描述 投票:0回答:1

假设我有一个条件

@Repository
public interface FooRepository extends JpaRepository<Foo, Integer>, JpaSpecificationExecutor<Foo> {

    static Specification<Foo> byBars(Collection<String> bars) {
        return (Root<Foo> root, CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder) -> {
            if (bars.isEmpty()) {
                return criteriaBuilder.disjunction();
            }

            return root.get("bar").in(bars);
        };
    }
}

好吧,这给了我们fooRepository.findAll(byBars(...) )

现在如何定义存储库方法以实现批量删除?

deleteBy(Specification<Foo> specification);

不起作用,也不起作用

void deleteAll(Specification<Foo> specification);

void delete(Specification<Foo> specification);

因为

没有找到类型为Foo的deleteBy!

java spring jpa spring-data-jpa criteria-api
1个回答
0
投票

Spring规范支持find,findAll和count查询。spring-data JPA中不支持删除和更新方法。

来自JpaSpecificationExecutor的参考:

Optional<T> findOne(@Nullable Specification<T> spec);

List<T> findAll(@Nullable Specification<T> spec);

Page<T> findAll(@Nullable Specification<T> spec, Pageable pageable);

List<T> findAll(@Nullable Specification<T> spec, Sort sort);

long count(@Nullable Specification<T> spec);
© www.soinside.com 2019 - 2024. All rights reserved.