Interface JpaSpecificationExecutor<T>
- All Known Subinterfaces:
JpaRepositoryImplementation<T,ID>
- All Known Implementing Classes:
QuerydslJpaRepository,SimpleJpaRepository
Specifications based on the JPA criteria API.- Author:
- Oliver Gierke, Christoph Strobl, Diego Krupitza, Mark Paluch, Joshua Chen
-
Nested Class Summary
Nested ClassesModifier and TypeInterfaceDescriptionstatic interfaceExtension toFluentQuery.FetchableFluentQueryallowing slice results and pagination with a custom countSpecification. -
Method Summary
Modifier and TypeMethodDescriptionlongcount(Specification<T> spec) Returns the number of instances that the givenSpecificationwill return.longdelete(Specification<T> spec) Deletes by theSpecificationand returns the number of rows deleted.booleanexists(Specification<T> spec) Checks whether the data store contains elements that match the givenSpecification.findAll(Specification<T> spec) Returns all entities matching the givenSpecification.findAll(Specification<T> spec, Pageable pageable) Returns aPageof entities matching the givenSpecification.findAll(Specification<T> spec, Sort sort) Returns all entities matching the givenSpecificationandSort.findAll(Specification<T> spec, Specification<T> countSpec, Pageable pageable) Returns aPageof entities matching the givenSpecification.<S extends T,R>
RfindBy(Specification<T> spec, Function<? super JpaSpecificationExecutor.SpecificationFluentQuery<S>, R> queryFunction) Returns entities matching the givenSpecificationapplying thequeryFunctionthat defines the query and its result type.findOne(Specification<T> spec) Returns a single entity matching the givenSpecificationorOptional.empty()if none found.
-
Method Details
-
findOne
Returns a single entity matching the givenSpecificationorOptional.empty()if none found.- Parameters:
spec- must not be null.- Returns:
- never null.
- Throws:
IncorrectResultSizeDataAccessException- if more than one entity found.
-
findAll
Returns all entities matching the givenSpecification.If no
Specificationis given all entities matching<T>will be selected.- Parameters:
spec- can be null.- Returns:
- never null.
-
findAll
Returns aPageof entities matching the givenSpecification.If no
Specificationis given all entities matching<T>will be selected.- Parameters:
spec- can be null.pageable- must not be null.- Returns:
- never null.
-
findAll
Page<T> findAll(@Nullable Specification<T> spec, @Nullable Specification<T> countSpec, Pageable pageable) Returns aPageof entities matching the givenSpecification.Supports counting the total number of entities matching the
Specification.- Parameters:
spec- can be null, if noSpecificationis given all entities matching<T>will be selected.countSpec- can be null,if noSpecificationis given all entities matching<T>will be counted.pageable- must not be null.- Returns:
- never null.
- Since:
- 3.5
-
findAll
Returns all entities matching the givenSpecificationandSort.If no
Specificationis given all entities matching<T>will be selected.- Parameters:
spec- can be null.sort- must not be null.- Returns:
- never null.
-
count
Returns the number of instances that the givenSpecificationwill return.If no
Specificationis given all entities matching<T>will be counted.- Parameters:
spec- theSpecificationto count instances for, must not be null.- Returns:
- the number of instances.
-
exists
Checks whether the data store contains elements that match the givenSpecification.- Parameters:
spec- theSpecificationto use for the existence check, ust not be null.- Returns:
trueif the data store contains elements that match the givenSpecificationotherwisefalse.
-
delete
Deletes by theSpecificationand returns the number of rows deleted.This method uses
Criteria API bulk deletethat maps directly to database delete operations. The persistence context is not synchronized with the result of the bulk delete.Please note that
CriteriaQueryin,Specification.toPredicate(Root, CriteriaQuery, CriteriaBuilder)will be null becauseCriteriaBuilder.createCriteriaDelete(Class)does not implementCriteriaQuery.If no
Specificationis given all entities matching<T>will be deleted.- Parameters:
spec- theSpecificationto use for the existence check, can not be null.- Returns:
- the number of entities deleted.
- Since:
- 3.0
-
findBy
<S extends T,R> R findBy(Specification<T> spec, Function<? super JpaSpecificationExecutor.SpecificationFluentQuery<S>, R> queryFunction) Returns entities matching the givenSpecificationapplying thequeryFunctionthat defines the query and its result type.The query object used with
queryFunctionis only valid inside thefindBy(…)method call. This requires the query function to return a query result and not theFluentQueryobject itself to ensure the query is executed inside thefindBy(…)method.- Parameters:
spec- must not be null.queryFunction- the query function defining projection, sorting, and the result type- Returns:
- all entities matching the given specification.
- Throws:
InvalidDataAccessApiUsageException- if the query function returns theFluentQueryinstance.- Since:
- 3.0
-