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 980bc215c..6024ba870 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 @@ -271,16 +271,11 @@ public class Query implements ReadConcernAware, ReadPreferenceAware { */ public Query with(Pageable pageable) { - if (pageable.isUnpaged()) { - if(pageable.getSort().isSorted()) { - return with(pageable.getSort()); - } - return this; + if (pageable.isPaged()) { + this.limit = pageable.toLimit(); + this.skip = pageable.getOffset(); } - this.limit = pageable.toLimit(); - this.skip = pageable.getOffset(); - return with(pageable.getSort()); } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/QuerydslMongoPredicateExecutor.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/QuerydslMongoPredicateExecutor.java index 6787053b3..8c1704a7c 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/QuerydslMongoPredicateExecutor.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/QuerydslMongoPredicateExecutor.java @@ -22,12 +22,13 @@ import java.util.function.Function; import java.util.stream.Stream; import org.bson.Document; + import org.springframework.dao.IncorrectResultSizeDataAccessException; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; -import org.springframework.data.domain.Window; import org.springframework.data.domain.ScrollPosition; import org.springframework.data.domain.Sort; +import org.springframework.data.domain.Window; import org.springframework.data.mongodb.core.MongoOperations; import org.springframework.data.mongodb.core.query.BasicQuery; import org.springframework.data.mongodb.repository.query.MongoEntityInformation; @@ -199,11 +200,10 @@ public class QuerydslMongoPredicateExecutor extends QuerydslPredicateExecutor */ private SpringDataMongodbQuery applyPagination(SpringDataMongodbQuery query, Pageable pageable) { - if (pageable.isUnpaged()) { - return query; + if (pageable.isPaged()) { + query = query.offset(pageable.getOffset()).limit(pageable.getPageSize()); } - query = query.offset(pageable.getOffset()).limit(pageable.getPageSize()); return applySorting(query, pageable.getSort()); } diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/support/QuerydslMongoPredicateExecutorIntegrationTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/support/QuerydslMongoPredicateExecutorIntegrationTests.java index 0bec4aeef..4471ed0f3 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/support/QuerydslMongoPredicateExecutorIntegrationTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/support/QuerydslMongoPredicateExecutorIntegrationTests.java @@ -141,6 +141,13 @@ public class QuerydslMongoPredicateExecutorIntegrationTests { .getContent()).containsExactly(dave); } + @Test // GH-4771 + public void findUnpagedPage() { + + assertThat(repository.findAll(person.lastname.isNotNull(), Pageable.unpaged(Sort.by("firstname")))) + .containsExactly(carter, dave, oliver); + } + @Test // DATAMONGO-362, DATAMONGO-1848 public void springDataMongodbQueryShouldAllowJoinOnDBref() {