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 d79b22aef..ef741dc49 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 @@ -286,6 +286,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());