From e9e6f88e97235b4507d01deee5389be87ae7f484 Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Thu, 29 Aug 2024 13:02:22 +0200 Subject: [PATCH] Apply sort of unpaged `Pageable` to query. Original pull request: #4773 Closes #4771 --- .../springframework/data/mongodb/core/query/Query.java | 3 +++ .../data/mongodb/core/query/QueryTests.java | 10 ++++++++++ 2 files changed, 13 insertions(+) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Query.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Query.java index 2b307f15c..a134dc979 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Query.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Query.java @@ -272,6 +272,9 @@ public class Query implements ReadConcernAware, ReadPreferenceAware { public Query with(Pageable pageable) { if (pageable.isUnpaged()) { + if(pageable.getSort().isSorted()) { + return with(pageable.getSort()); + } return this; } diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/query/QueryTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/query/QueryTests.java index f428292c6..9a534f430 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/query/QueryTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/query/QueryTests.java @@ -23,6 +23,7 @@ import org.bson.Document; import org.junit.jupiter.api.Test; import org.springframework.aop.framework.ProxyFactory; import org.springframework.data.domain.Limit; +import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort.Direction; import org.springframework.data.domain.Sort.Order; @@ -366,6 +367,15 @@ class QueryTests { compareQueries(target, source); } + @Test // GH-4771 + void appliesSortOfUnpagedPageable() { + + Query query = new Query(); + query.with(Pageable.unpaged(Sort.by("sortMe"))); + + assertThat(query.isSorted()).isTrue(); + } + private void compareQueries(Query actual, Query expected) { assertThat(actual.getCollation()).isEqualTo(expected.getCollation());