Skip to content

Commit a508b7d

Browse files
committed
Polishing.
Apply sort of unpaged Pageable to QuerydslMongoPredicateExecutor query. Original pull request: spring-projects#4773 Closes spring-projects#4771
1 parent 4df06c7 commit a508b7d

File tree

3 files changed

+14
-12
lines changed

3 files changed

+14
-12
lines changed

spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Query.java

+3-8
Original file line numberDiff line numberDiff line change
@@ -285,16 +285,11 @@ public Query withHint(Document hint) {
285285
*/
286286
public Query with(Pageable pageable) {
287287

288-
if (pageable.isUnpaged()) {
289-
if(pageable.getSort().isSorted()) {
290-
return with(pageable.getSort());
291-
}
292-
return this;
288+
if (pageable.isPaged()) {
289+
this.limit = pageable.toLimit();
290+
this.skip = pageable.getOffset();
293291
}
294292

295-
this.limit = pageable.toLimit();
296-
this.skip = pageable.getOffset();
297-
298293
return with(pageable.getSort());
299294
}
300295

spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/QuerydslMongoPredicateExecutor.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,13 @@
2222
import java.util.stream.Stream;
2323

2424
import org.bson.Document;
25+
2526
import org.springframework.dao.IncorrectResultSizeDataAccessException;
2627
import org.springframework.data.domain.Page;
2728
import org.springframework.data.domain.Pageable;
28-
import org.springframework.data.domain.Window;
2929
import org.springframework.data.domain.ScrollPosition;
3030
import org.springframework.data.domain.Sort;
31+
import org.springframework.data.domain.Window;
3132
import org.springframework.data.mongodb.core.MongoOperations;
3233
import org.springframework.data.mongodb.core.query.BasicQuery;
3334
import org.springframework.data.mongodb.repository.query.MongoEntityInformation;
@@ -199,11 +200,10 @@ private SpringDataMongodbQuery<T> createQuery() {
199200
*/
200201
private SpringDataMongodbQuery<T> applyPagination(SpringDataMongodbQuery<T> query, Pageable pageable) {
201202

202-
if (pageable.isUnpaged()) {
203-
return query;
203+
if (pageable.isPaged()) {
204+
query = query.offset(pageable.getOffset()).limit(pageable.getPageSize());
204205
}
205206

206-
query = query.offset(pageable.getOffset()).limit(pageable.getPageSize());
207207
return applySorting(query, pageable.getSort());
208208
}
209209

spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/support/QuerydslMongoPredicateExecutorIntegrationTests.java

+7
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,13 @@ public void findPage() {
141141
.getContent()).containsExactly(dave);
142142
}
143143

144+
@Test // GH-4771
145+
public void findUnpagedPage() {
146+
147+
assertThat(repository.findAll(person.lastname.isNotNull(), Pageable.unpaged(Sort.by("firstname"))))
148+
.containsExactly(carter, dave, oliver);
149+
}
150+
144151
@Test // DATAMONGO-362, DATAMONGO-1848
145152
public void springDataMongodbQueryShouldAllowJoinOnDBref() {
146153

0 commit comments

Comments
 (0)