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<T>.

Original pull request: #275.
This commit is contained in:
Thomas Darimont
2015-02-23 12:02:39 +01:00
committed by Oliver Gierke
parent d276306ddc
commit b7acbc4347
2 changed files with 26 additions and 0 deletions

View File

@@ -113,6 +113,15 @@ public class QueryDslMongoRepository<T, ID extends Serializable> 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<T> 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[])

View File

@@ -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<Person> 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));
}
}