From 835aba0bef46f9d8c2c42fb674a2d2c68b97d460 Mon Sep 17 00:00:00 2001 From: yoa1226 Date: Mon, 17 Jun 2024 09:09:16 +0800 Subject: [PATCH] support Pageable.unpaged(sort) Resolves: #3476 Original pull request: #3514 --- .../repository/support/SimpleJpaRepository.java | 3 +++ .../data/jpa/repository/UserRepositoryTests.java | 16 ++++++++++++++++ 2 files changed, 19 insertions(+) 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() {