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, Mark Paluch
  • Method Details

    • findOne

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

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

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

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

      long count(Specification<T> spec)
      Returns the number of instances that the given Specification will return.
      Parameters:
      spec - the Specification to count instances for, must not 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, ust 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<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