diff --git a/src/main/java/org/springframework/data/jpa/repository/support/SimpleJpaRepository.java b/src/main/java/org/springframework/data/jpa/repository/support/SimpleJpaRepository.java index dcc493c72..367ee9f47 100644 --- a/src/main/java/org/springframework/data/jpa/repository/support/SimpleJpaRepository.java +++ b/src/main/java/org/springframework/data/jpa/repository/support/SimpleJpaRepository.java @@ -17,14 +17,34 @@ package org.springframework.data.jpa.repository.support; import static org.springframework.data.jpa.repository.query.QueryUtils.*; -import java.util.*; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; import java.util.function.Function; -import javax.persistence.*; -import javax.persistence.criteria.*; +import javax.persistence.EntityManager; +import javax.persistence.LockModeType; +import javax.persistence.NoResultException; +import javax.persistence.Parameter; +import javax.persistence.Query; +import javax.persistence.TypedQuery; +import javax.persistence.criteria.CriteriaBuilder; +import javax.persistence.criteria.CriteriaQuery; +import javax.persistence.criteria.ParameterExpression; +import javax.persistence.criteria.Path; +import javax.persistence.criteria.Predicate; +import javax.persistence.criteria.Root; import org.springframework.dao.EmptyResultDataAccessException; -import org.springframework.data.domain.*; +import org.springframework.data.domain.Example; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageImpl; +import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Sort; import org.springframework.data.jpa.convert.QueryByExamplePredicateBuilder; import org.springframework.data.jpa.domain.Specification; import org.springframework.data.jpa.provider.PersistenceProvider; @@ -307,7 +327,6 @@ public class SimpleJpaRepository implements JpaRepositoryImplementation implements JpaRepositoryImplementation spec) { @@ -567,8 +582,7 @@ public class SimpleJpaRepository implements JpaRepositoryImplementation List findAll(Example example, Sort sort) { - return getQuery(new ExampleSpecification<>(example, escapeCharacter), example.getProbeType(), sort) - .getResultList(); + return getQuery(new ExampleSpecification<>(example, escapeCharacter), example.getProbeType(), sort).getResultList(); } /* diff --git a/src/test/java/org/springframework/data/jpa/domain/sample/UserSpecifications.java b/src/test/java/org/springframework/data/jpa/domain/sample/UserSpecifications.java index de8b99b88..d7e754ebd 100644 --- a/src/test/java/org/springframework/data/jpa/domain/sample/UserSpecifications.java +++ b/src/test/java/org/springframework/data/jpa/domain/sample/UserSpecifications.java @@ -32,9 +32,6 @@ public class UserSpecifications { /** * A {@link Specification} to match on a {@link User}'s firstname. - * - * @param firstname - * @return */ public static Specification userHasFirstname(final String firstname) { @@ -43,9 +40,6 @@ public class UserSpecifications { /** * A {@link Specification} to match on a {@link User}'s lastname. - * - * @param firstname - * @return */ public static Specification userHasLastname(final String lastname) { @@ -54,27 +48,16 @@ public class UserSpecifications { /** * A {@link Specification} to do a like-match on a {@link User}'s firstname. - * - * @param firstname - * @return */ public static Specification userHasFirstnameLike(final String expression) { - return new Specification() { - - @Override - public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder cb) { - - return cb.like(root.get("firstname").as(String.class), String.format("%%%s%%", expression)); - } - }; + return (root, query, cb) -> cb.like(root.get("firstname").as(String.class), String.format("%%%s%%", expression)); } /** * A {@link Specification} to do an age check. * * @param age upper (exclusive) bound of the age - * @return */ public static Specification userHasAgeLess(final Integer age) { @@ -84,33 +67,19 @@ public class UserSpecifications { /** * A {@link Specification} to do a like-match on a {@link User}'s lastname but also adding a sort order on the * firstname. - * - * @param firstname - * @return */ public static Specification userHasLastnameLikeWithSort(final String expression) { - return new Specification() { + return (root, query, cb) -> { - @Override - public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder cb) { + query.orderBy(cb.asc(root.get("firstname"))); - query.orderBy(cb.asc(root.get("firstname"))); - - return cb.like(root.get("lastname").as(String.class), String.format("%%%s%%", expression)); - } + return cb.like(root.get("lastname").as(String.class), String.format("%%%s%%", expression)); }; } private static Specification simplePropertySpec(final String property, final Object value) { - return new Specification() { - - @Override - public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder builder) { - - return builder.equal(root.get(property), value); - } - }; + return (root, query, builder) -> builder.equal(root.get(property), value); } } diff --git a/src/test/java/org/springframework/data/jpa/repository/UserRepositoryTests.java b/src/test/java/org/springframework/data/jpa/repository/UserRepositoryTests.java index 68ccc9479..92382022a 100644 --- a/src/test/java/org/springframework/data/jpa/repository/UserRepositoryTests.java +++ b/src/test/java/org/springframework/data/jpa/repository/UserRepositoryTests.java @@ -2643,6 +2643,7 @@ public class UserRepositoryTests { @Test // GH-2388 void existsWithSpec() { + flushTestUsers(); Specification minorSpec = userHasAgeLess(18);