From b7acbc43470bfe388efc4499e0dda88acc472d69 Mon Sep 17 00:00:00 2001 From: Thomas Darimont Date: Mon, 23 Feb 2015 12:02:39 +0100 Subject: [PATCH] DATAMONGO-1167 - Added QueryDslPredicateExecutor.findAll(Predicate, Sort). We now support findAll on QueryDslMongoRepository that accepts a Querydsl Predicate and a Sort and returns a List. Original pull request: #275. --- .../support/QueryDslMongoRepository.java | 9 +++++++++ ...QueryDslMongoRepositoryIntegrationTests.java | 17 +++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/QueryDslMongoRepository.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/QueryDslMongoRepository.java index 8363ae8ac..306db7c45 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/QueryDslMongoRepository.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/QueryDslMongoRepository.java @@ -113,6 +113,15 @@ public class QueryDslMongoRepository extends SimpleM return createQueryFor(predicate).orderBy(orders).list(); } + /* + * (non-Javadoc) + * @see org.springframework.data.querydsl.QueryDslPredicateExecutor#findAll(com.mysema.query.types.Predicate, org.springframework.data.domain.Sort) + */ + @Override + public List findAll(Predicate predicate, Sort sort) { + return applySorting(createQueryFor(predicate), sort).list(); + } + /* * (non-Javadoc) * @see org.springframework.data.querydsl.QueryDslPredicateExecutor#findAll(com.mysema.query.types.OrderSpecifier[]) diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/support/QueryDslMongoRepositoryIntegrationTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/support/QueryDslMongoRepositoryIntegrationTests.java index 3809fbb41..29a7cfe5b 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/support/QueryDslMongoRepositoryIntegrationTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/support/QueryDslMongoRepositoryIntegrationTests.java @@ -19,11 +19,14 @@ import static org.hamcrest.Matchers.*; import static org.junit.Assert.*; import java.util.Arrays; +import java.util.List; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Sort; +import org.springframework.data.domain.Sort.Direction; import org.springframework.data.mongodb.core.MongoOperations; import org.springframework.data.mongodb.repository.Person; import org.springframework.data.mongodb.repository.QPerson; @@ -77,4 +80,18 @@ public class QueryDslMongoRepositoryIntegrationTests { assertThat(repository.exists(person.firstname.eq("Unknown")), is(false)); assertThat(repository.exists((Predicate) null), is(true)); } + + /** + * @see DATAMONGO-1167 + */ + @Test + public void shouldSupportFindAllWithPredicateAndSort() { + + List users = repository.findAll(person.lastname.isNotNull(), new Sort(Direction.ASC, "firstname")); + + assertThat(users, hasSize(3)); + assertThat(users.get(0).getFirstname(), is(carter.getFirstname())); + assertThat(users.get(2).getFirstname(), is(oliver.getFirstname())); + assertThat(users, hasItems(carter, dave, oliver)); + } }