diff --git a/src/main/java/org/springframework/data/jpa/repository/JpaSpecificationExecutor.java b/src/main/java/org/springframework/data/jpa/repository/JpaSpecificationExecutor.java index ef749f6b5..40b001320 100644 --- a/src/main/java/org/springframework/data/jpa/repository/JpaSpecificationExecutor.java +++ b/src/main/java/org/springframework/data/jpa/repository/JpaSpecificationExecutor.java @@ -34,8 +34,8 @@ public interface JpaSpecificationExecutor { /** * Returns a single entity matching the given {@link Specification} or {@link Optional#empty()} if none found. * - * @param spec can be @literal {@null}. - * @return + * @param spec can be {@literal null}. + * @return never {@literal null}. * @throws org.springframework.dao.IncorrectResultSizeDataAccessException if more than one entity found. */ Optional findOne(Specification spec); 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 257d24488..597b562d9 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 @@ -56,7 +56,6 @@ import org.springframework.data.repository.support.PageableExecutionUtils; import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.Assert; -import org.springframework.util.ObjectUtils; /** * Default implementation of the {@link org.springframework.data.repository.CrudRepository} interface. This will offer @@ -346,7 +345,7 @@ public class SimpleJpaRepository implements JpaRepository, JpaSpec */ public Page findAll(Pageable pageable) { - if (null == pageable) { + if (isUnpaged(pageable)) { return new PageImpl(findAll()); } @@ -381,7 +380,7 @@ public class SimpleJpaRepository implements JpaRepository, JpaSpec public Page findAll(Specification spec, Pageable pageable) { TypedQuery query = getQuery(spec, pageable); - return (pageable == null || pageable.isUnpaged()) ? new PageImpl(query.getResultList()) + return isUnpaged(pageable) ? new PageImpl(query.getResultList()) : readPage(query, getDomainClass(), pageable, spec); } @@ -456,7 +455,8 @@ public class SimpleJpaRepository implements JpaRepository, JpaSpec Class probeType = example.getProbeType(); TypedQuery query = getQuery(new ExampleSpecification<>(example), probeType, pageable); - return pageable == null ? new PageImpl<>(query.getResultList()) : readPage(query, probeType, pageable, spec); + return isUnpaged(pageable) ? new PageImpl<>(query.getResultList()) + : readPage(query, probeType, pageable, spec); } /* @@ -529,7 +529,6 @@ public class SimpleJpaRepository implements JpaRepository, JpaSpec */ @Transactional public void flush() { - em.flush(); } @@ -740,6 +739,10 @@ public class SimpleJpaRepository implements JpaRepository, JpaSpec return total; } + private static boolean isUnpaged(Pageable pageable) { + return pageable == null || pageable.isUnpaged(); + } + /** * Specification that gives access to the {@link Parameter} instance used to bind the ids for * {@link SimpleJpaRepository#findAllById(Iterable)}. Workaround for OpenJPA not binding collections to in-clauses