Interface Specification<T>
- All Superinterfaces:
Serializable
- All Known Implementing Classes:
KeysetScrollSpecification
- Functional Interface:
- This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.
Specification in the sense of Domain Driven Design.
Specifications can be composed into higher order functions from other specifications using
and(Specification), or(Specification) or factory methods such as allOf(Iterable).
Composition considers whether one or more specifications contribute to the overall predicate by returning a
Predicate or null. Specifications returning null, such as unrestricted(), are
considered to not contribute to the overall predicate, and their result is not considered in the final predicate.
- Author:
- Oliver Gierke, Thomas Darimont, Krzysztof Rzymkowski, Sebastian Staudt, Mark Paluch, Jens Schauder, Daniel Shuy, Sergey Rukin, Peter Aisher
-
Field Summary
Fields -
Method Summary
Modifier and TypeMethodDescriptionstatic <T> Specification<T>allOf(Iterable<Specification<T>> specifications) Applies an AND operation to all the givenSpecifications.static <T> Specification<T>allOf(Specification<T>... specifications) default Specification<T>and(Specification<T> other) ANDs the givenSpecificationto the current one.static <T> Specification<T>anyOf(Iterable<Specification<T>> specifications) Applies an OR operation to all the givenSpecifications.static <T> Specification<T>anyOf(Specification<T>... specifications) static <T> Specification<T>not(Specification<T> spec) Negates the givenSpecification.default Specification<T>or(Specification<T> other) ORs the given specification to the current one.jakarta.persistence.criteria.PredicatetoPredicate(jakarta.persistence.criteria.Root<T> root, jakarta.persistence.criteria.CriteriaQuery<?> query, jakarta.persistence.criteria.CriteriaBuilder criteriaBuilder) Creates a WHERE clause for a query of the referenced entity in form of aPredicatefor the givenRootandCriteriaQuery.static <T> Specification<T>Simple static factory method to create a specification which does not participate in matching.static <T> Specification<T>where(Specification<T> spec) Deprecated, for removal: This API element is subject to removal in a future version.since 3.5, to be removed with 4.0 as we no longer want to support null specifications.
-
Field Details
-
serialVersionUID
static final long serialVersionUID- See Also:
-
-
Method Details
-
not
Negates the givenSpecification.- Type Parameters:
T- the type of theRootthe resulting Specification operates on.- Parameters:
spec- can be null.- Returns:
- guaranteed to be not null.
- Since:
- 2.0
-
unrestricted
Simple static factory method to create a specification which does not participate in matching. The specification returned isnull-like, and is elided in all operations.unrestricted().and(other) // consider only `other` unrestricted().or(other) // consider only `other` not(unrestricted()) // equivalent to `unrestricted()`
- Type Parameters:
T- the type of theRootthe resulting Specification operates on.- Returns:
- guaranteed to be not null.
- Since:
- 3.5.2
-
where
@Deprecated(since="3.5.0", forRemoval=true) static <T> Specification<T> where(@Nullable Specification<T> spec) Deprecated, for removal: This API element is subject to removal in a future version.since 3.5, to be removed with 4.0 as we no longer want to support null specifications. Useunrestricted()instead.Simple static factory method to add some syntactic sugar around aSpecification.- Type Parameters:
T- the type of theRootthe resulting Specification operates on.- Parameters:
spec- can be null.- Returns:
- guaranteed to be not null.
- Since:
- 2.0
-
and
ANDs the givenSpecificationto the current one.- Parameters:
other- can be null.- Returns:
- The conjunction of the specifications
- Since:
- 2.0
-
or
ORs the given specification to the current one.- Parameters:
other- can be null.- Returns:
- The disjunction of the specifications
- Since:
- 2.0
-
toPredicate
@Nullable jakarta.persistence.criteria.Predicate toPredicate(jakarta.persistence.criteria.Root<T> root, @Nullable jakarta.persistence.criteria.CriteriaQuery<?> query, jakarta.persistence.criteria.CriteriaBuilder criteriaBuilder) Creates a WHERE clause for a query of the referenced entity in form of aPredicatefor the givenRootandCriteriaQuery.- Parameters:
root- must not be null.query- can be null to allow overrides that acceptCriteriaDeletewhich is anAbstractQuerybut noCriteriaQuery.criteriaBuilder- must not be null.- Returns:
- a
Predicate, may be null.
-
allOf
Applies an AND operation to all the givenSpecifications.- Parameters:
specifications- TheSpecifications to compose. Can containnulls.- Returns:
- The conjunction of the specifications
- Since:
- 3.0
- See Also:
-
allOf
- Since:
- 3.0
- See Also:
-
anyOf
Applies an OR operation to all the givenSpecifications.- Parameters:
specifications- TheSpecifications to compose. Can containnulls.- Returns:
- The disjunction of the specifications
- Since:
- 3.0
- See Also:
-
anyOf
- Since:
- 3.0
- See Also:
-