Удалить с критериями API? - PullRequest
       27

Удалить с критериями API?

0 голосов
/ 24 октября 2019

Допустим, у меня есть критерий

@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);

, поскольку

Не найдено свойство deleteBy для типа Foo!

1 Ответ

0 голосов
/ 24 октября 2019

В спецификации Spring есть поддержка запросов find, findAll и count. В JPA-данных Spring отсутствует поддержка методов удаления и обновления.

Ссылка от 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...