Interface QuerySpecification<T>
- Type Parameters:
T- The entity root type
public interface QuerySpecification<T>
A reusable, composable condition for selecting entities, expressed with the JPA criteria API.
toPredicate(Root, CriteriaQuery, CriteriaBuilder) receives the query root, the query being built and the
criteria builder, and returns the Predicate to use in the WHERE clause, or null for no
restriction. Having access to the CriteriaQuery allows a specification to also influence the query, for
example to make it distinct; use PredicateSpecification when only a predicate is needed.
Specifications are passed to the methods of JpaSpecificationExecutor and
can be combined with and(QuerySpecification), or(QuerySpecification) and
not(QuerySpecification).
Similar to Spring Data JPA's Specification.
- Since:
- 3.2
- Author:
- Denis Stepanov
-
Field Summary
Fields -
Method Summary
Modifier and TypeMethodDescriptiondefault QuerySpecification<T> and(@Nullable PredicateSpecification<T> other) ANDs the givenPredicateSpecificationto the current one.default QuerySpecification<T> and(@Nullable QuerySpecification<T> other) ANDs the givenQuerySpecificationto the current one.static <T> QuerySpecification<T> not(@Nullable QuerySpecification<T> spec) Negates the givenQuerySpecification.default QuerySpecification<T> or(@Nullable PredicateSpecification<T> other) ORs the givenPredicateSpecificationto the current one.default QuerySpecification<T> or(@Nullable QuerySpecification<T> other) ORs the given specification to the current one.@Nullable jakarta.persistence.criteria.PredicatetoPredicate(jakarta.persistence.criteria.Root<T> root, jakarta.persistence.criteria.CriteriaQuery<?> query, jakarta.persistence.criteria.CriteriaBuilder criteriaBuilder) Creates a WHERE clause predicate for the given entityRootand a criteria query.static <T> QuerySpecification<T> where(@Nullable PredicateSpecification<T> spec) Simple static factory method to add some syntactic sugar around aPredicateSpecification.static <T> QuerySpecification<T> where(@Nullable QuerySpecification<T> spec) Simple static factory method to add some syntactic sugar around aQuerySpecification.
-
Field Details
-
ALL
Include all specification.
-
-
Method Details
-
not
Negates the givenQuerySpecification.- Type Parameters:
T- the type of theRootthe resulting Specification operates on.- Parameters:
spec- The specification.- Returns:
- negated specification}.
-
where
Simple static factory method to add some syntactic sugar around aQuerySpecification.- Type Parameters:
T- the type of theRootthe resulting Specification operates on.- Parameters:
spec- The specification.- Returns:
- guaranteed to be not null.
-
where
Simple static factory method to add some syntactic sugar around aPredicateSpecification.- Type Parameters:
T- the type of theRootthe resulting Specification operates on.- Parameters:
spec- The specification.- Returns:
- query specification.
-
and
ANDs the givenQuerySpecificationto the current one.- Parameters:
other- The other predicate.- Returns:
- The conjunction of the specifications
-
or
ORs the given specification to the current one.- Parameters:
other- The other predicate.- Returns:
- The disjunction of the specifications
-
and
ANDs the givenPredicateSpecificationto the current one.- Parameters:
other- The other predicate.- Returns:
- The conjunction of the specifications
-
or
ORs the givenPredicateSpecificationto the current one.- Parameters:
other- The other predicate.- Returns:
- The disjunction of the specifications
-
toPredicate
@Nullable jakarta.persistence.criteria.Predicate toPredicate(jakarta.persistence.criteria.Root<T> root, jakarta.persistence.criteria.CriteriaQuery<?> query, jakarta.persistence.criteria.CriteriaBuilder criteriaBuilder) Creates a WHERE clause predicate for the given entityRootand a criteria query.- Parameters:
root- The entity rootquery- The criteria querycriteriaBuilder- The criteria builder- Returns:
- a
Predicate
-