diff --git a/src/main/java/org/springframework/data/jpa/domain/Specification.java b/src/main/java/org/springframework/data/jpa/domain/Specification.java index 834cc6faa..8e1d9a601 100644 --- a/src/main/java/org/springframework/data/jpa/domain/Specification.java +++ b/src/main/java/org/springframework/data/jpa/domain/Specification.java @@ -34,6 +34,7 @@ import org.springframework.lang.Nullable; * @author Krzysztof Rzymkowski * @author Sebastian Staudt * @author Mark Paluch + * @author Jens Schauder */ public interface Specification extends Serializable { @@ -62,7 +63,6 @@ public interface Specification extends Serializable { * @return * @since 2.0 */ - @Nullable static Specification where(@Nullable Specification spec) { return spec == null ? (root, query, builder) -> null : spec; } @@ -74,7 +74,7 @@ public interface Specification extends Serializable { * @return The conjunction of the specifications * @since 2.0 */ - @Nullable + default Specification and(@Nullable Specification other) { return composed(this, other, (builder, left, rhs) -> builder.and(left, rhs)); } @@ -86,7 +86,6 @@ public interface Specification extends Serializable { * @return The disjunction of the specifications * @since 2.0 */ - @Nullable default Specification or(@Nullable Specification other) { return composed(this, other, (builder, left, rhs) -> builder.or(left, rhs)); } diff --git a/src/main/java/org/springframework/data/jpa/domain/SpecificationComposition.java b/src/main/java/org/springframework/data/jpa/domain/SpecificationComposition.java index 89b420799..596aa08f1 100644 --- a/src/main/java/org/springframework/data/jpa/domain/SpecificationComposition.java +++ b/src/main/java/org/springframework/data/jpa/domain/SpecificationComposition.java @@ -29,6 +29,7 @@ import org.springframework.lang.Nullable; * * @author Sebastian Staudt * @author Oliver Gierke + * @author Jens Schauder * @see Specification * @since 2.2 */ @@ -38,7 +39,6 @@ class SpecificationComposition { Predicate combine(CriteriaBuilder builder, @Nullable Predicate lhs, @Nullable Predicate rhs); } - @Nullable static Specification composed(@Nullable Specification lhs, @Nullable Specification rhs, Combiner combiner) { @@ -55,7 +55,8 @@ class SpecificationComposition { }; } - private static Predicate toPredicate(Specification specification, Root root, CriteriaQuery query, + @Nullable + private static Predicate toPredicate(@Nullable Specification specification, Root root, CriteriaQuery query, CriteriaBuilder builder) { return specification == null ? null : specification.toPredicate(root, query, builder); }