Browse Source

Polishing.

Apply sort of unpaged Pageable to QuerydslMongoPredicateExecutor query.

Original pull request: #4773
Closes #4771
pull/4782/merge
Mark Paluch 1 year ago
parent
commit
a3016dacf4
No known key found for this signature in database
GPG Key ID: 55BC6374BAA9D973
  1. 11
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Query.java
  2. 8
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/QuerydslMongoPredicateExecutor.java
  3. 7
      spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/support/QuerydslMongoPredicateExecutorIntegrationTests.java

11
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) { public Query with(Pageable pageable) {
if (pageable.isUnpaged()) { if (pageable.isPaged()) {
if(pageable.getSort().isSorted()) { this.limit = pageable.toLimit();
return with(pageable.getSort()); this.skip = pageable.getOffset();
}
return this;
} }
this.limit = pageable.toLimit();
this.skip = pageable.getOffset();
return with(pageable.getSort()); return with(pageable.getSort());
} }

8
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 java.util.stream.Stream;
import org.bson.Document; import org.bson.Document;
import org.springframework.dao.IncorrectResultSizeDataAccessException; import org.springframework.dao.IncorrectResultSizeDataAccessException;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Window;
import org.springframework.data.domain.ScrollPosition; import org.springframework.data.domain.ScrollPosition;
import org.springframework.data.domain.Sort; 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.MongoOperations;
import org.springframework.data.mongodb.core.query.BasicQuery; import org.springframework.data.mongodb.core.query.BasicQuery;
import org.springframework.data.mongodb.repository.query.MongoEntityInformation; import org.springframework.data.mongodb.repository.query.MongoEntityInformation;
@ -199,11 +200,10 @@ public class QuerydslMongoPredicateExecutor<T> extends QuerydslPredicateExecutor
*/ */
private SpringDataMongodbQuery<T> applyPagination(SpringDataMongodbQuery<T> query, Pageable pageable) { private SpringDataMongodbQuery<T> applyPagination(SpringDataMongodbQuery<T> query, Pageable pageable) {
if (pageable.isUnpaged()) { if (pageable.isPaged()) {
return query; query = query.offset(pageable.getOffset()).limit(pageable.getPageSize());
} }
query = query.offset(pageable.getOffset()).limit(pageable.getPageSize());
return applySorting(query, pageable.getSort()); return applySorting(query, pageable.getSort());
} }

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

@ -141,6 +141,13 @@ public class QuerydslMongoPredicateExecutorIntegrationTests {
.getContent()).containsExactly(dave); .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 @Test // DATAMONGO-362, DATAMONGO-1848
public void springDataMongodbQueryShouldAllowJoinOnDBref() { public void springDataMongodbQueryShouldAllowJoinOnDBref() {

Loading…
Cancel
Save