Interface JpaSpecificationExecutor<T>

All Known Subinterfaces:
JpaRepositoryImplementation<T,ID>
All Known Implementing Classes:
QuerydslJpaRepository, SimpleJpaRepository

public interface JpaSpecificationExecutor<T>
Interface to allow execution of Specifications based on the JPA criteria API.
Author:
Oliver Gierke, Christoph Strobl, Diego Krupitza
  • Method Details

    • findOne

      Optional<T> findOne(@Nullable Specification<T> spec)
      Returns a single entity matching the given Specification or Optional.empty() if none found.
      Parameters:
      spec - can be null.
      Returns:
      never null.
      Throws:
      org.springframework.dao.IncorrectResultSizeDataAccessException - if more than one entity found.
    • findAll

      List<T> findAll(@Nullable Specification<T> spec)
      Returns all entities matching the given Specification.
      Parameters:
      spec - can be null.
      Returns:
      never null.
    • findAll

      org.springframework.data.domain.Page<T> findAll(@Nullable Specification<T> spec, org.springframework.data.domain.Pageable pageable)
      Returns a Page of entities matching the given Specification.
      Parameters:
      spec - can be null.
      pageable - must not be null.
      Returns:
      never null.
    • findAll

      List<T> findAll(@Nullable Specification<T> spec, org.springframework.data.domain.Sort sort)
      Returns all entities matching the given Specification and Sort.
      Parameters:
      spec - can be null.
      sort - must not be null.
      Returns:
      never null.
    • count

      long count(@Nullable Specification<T> spec)
      Returns the number of instances that the given Specification will return.
      Parameters:
      spec - the Specification to count instances for. Can be null.
      Returns:
      the number of instances.
    • exists

      boolean exists(Specification<T> spec)
      Checks whether the data store contains elements that match the given Specification.
      Parameters:
      spec - the Specification to use for the existence check. Must not be null.
      Returns:
      true if the data store contains elements that match the given Specification otherwise false.
    • delete

      long delete(Specification<T> spec)
      Deletes by the Specification and returns the number of rows deleted.

      This method uses Criteria API bulk delete that maps directly to database delete operations. The persistence context is not synchronized with the result of the bulk delete.

      Please note that CriteriaQuery in, Specification.toPredicate(Root, CriteriaQuery, CriteriaBuilder) will be null because CriteriaBuilder.createCriteriaDelete(Class) does not implement CriteriaQuery.

      Parameters:
      spec - the Specification to use for the existence check. Must not be null.
      Returns:
      the number of entities deleted.
      Since:
      3.0
    • findBy

      <S extends T, R> R findBy(Specification<T> spec, Function<org.springframework.data.repository.query.FluentQuery.FetchableFluentQuery<S>,R> queryFunction)
      Returns entities matching the given Specification applying the queryFunction that defines the query and its result type.
      Parameters:
      spec - – must not be null.
      queryFunction - – the query function defining projection, sorting, and the result type
      Returns:
      all entities matching the given Example.
      Since:
      3.0