diff --git a/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/support/SimpleJpaRepository.java b/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/support/SimpleJpaRepository.java index cbd6552b1f..7918b7b4f4 100644 --- a/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/support/SimpleJpaRepository.java +++ b/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/support/SimpleJpaRepository.java @@ -428,6 +428,9 @@ public List findAll(Sort sort) { public Page findAll(Pageable pageable) { if (pageable.isUnpaged()) { + if(pageable.getSort().isSorted()) { + return new PageImpl<>(findAll(pageable.getSort())); + } return new PageImpl<>(findAll()); } diff --git a/spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/UserRepositoryTests.java b/spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/UserRepositoryTests.java index d549077eec..bd63b55b35 100644 --- a/spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/UserRepositoryTests.java +++ b/spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/UserRepositoryTests.java @@ -1727,6 +1727,22 @@ void pageableQueryReportsTotalFromCount() { assertThat(secondPage.getTotalElements()).isEqualTo(4L); } + @Test // GH-3476 + void unPageableQueryUnPagedSorted() { + + flushTestUsers(); + + Page firstPage = repository.findAll(PageRequest.of(0, 10)); + assertThat(firstPage.getContent()).hasSize(4); + assertThat(firstPage.getTotalElements()).isEqualTo(4L); + + + Page secondPage = repository.findAll(Pageable.unpaged(Sort.by(DESC, "age"))); + assertThat(secondPage.getContent()).hasSize(4); + assertThat(secondPage.getContent()).containsExactly(thirdUser, secondUser, fourthUser, firstUser); + assertThat(secondPage.getTotalElements()).isEqualTo(4L); + } + @Test // DATAJPA-506 void invokesQueryWithWrapperType() {