diff --git a/src/main/java/org/springframework/data/keyvalue/repository/support/QueryDslKeyValueRepository.java b/src/main/java/org/springframework/data/keyvalue/repository/support/QueryDslKeyValueRepository.java index 7622eab..d62265c 100644 --- a/src/main/java/org/springframework/data/keyvalue/repository/support/QueryDslKeyValueRepository.java +++ b/src/main/java/org/springframework/data/keyvalue/repository/support/QueryDslKeyValueRepository.java @@ -29,6 +29,7 @@ import org.springframework.data.querydsl.QueryDslPredicateExecutor; import org.springframework.data.querydsl.SimpleEntityPathResolver; import org.springframework.data.repository.core.EntityInformation; import org.springframework.util.Assert; +import org.springframework.util.ObjectUtils; import com.mysema.query.collections.CollQuery; import com.mysema.query.support.ProjectableQuery; @@ -136,6 +137,23 @@ public class QueryDslKeyValueRepository extends Simp return new PageImpl(query.list(builder), pageable, count(predicate)); } + /* + * (non-Javadoc) + * @see org.springframework.data.querydsl.QueryDslPredicateExecutor#findAll(com.mysema.query.types.OrderSpecifier[]) + */ + @Override + public Iterable findAll(OrderSpecifier... orders) { + + if (ObjectUtils.isEmpty(orders)) { + return findAll(); + } + + ProjectableQuery query = prepareQuery(null); + query.orderBy(orders); + + return query.list(builder); + } + /* * (non-Javadoc) * @see org.springframework.data.querydsl.QueryDslPredicateExecutor#count(com.mysema.query.types.Predicate) @@ -156,8 +174,10 @@ public class QueryDslKeyValueRepository extends Simp CollQuery query = new CollQuery(); query.from(builder, findAll()); - query.where(predicate); - + if (predicate != null) { + query.where(predicate); + } return query; } + } diff --git a/src/test/java/org/springframework/data/map/QueryDslMapRepositoryUnitTests.java b/src/test/java/org/springframework/data/map/QueryDslMapRepositoryUnitTests.java index 491b477..fe84026 100644 --- a/src/test/java/org/springframework/data/map/QueryDslMapRepositoryUnitTests.java +++ b/src/test/java/org/springframework/data/map/QueryDslMapRepositoryUnitTests.java @@ -122,6 +122,32 @@ public class QueryDslMapRepositoryUnitTests extends SimpleKeyValueRepositoryUnit assertThat(result, contains(JAIME, CERSEI)); } + /** + * @see DATAKV-90 + */ + @Test + public void findAllWithOrderSpecifierWorksCorrectly() { + + repository.save(LENNISTERS); + + Iterable result = getQPersonRepo().findAll(new QSort(QPerson.person.firstname.desc())); + + assertThat(result, contains(TYRION, JAIME, CERSEI)); + } + + /** + * @see DATAKV-90 + */ + @Test + public void findAllShouldIgnoreNullOrderSpecifier() { + + repository.save(LENNISTERS); + + Iterable result = getQPersonRepo().findAll((QSort) null); + + assertThat(result, containsInAnyOrder(TYRION, JAIME, CERSEI)); + } + @Override protected Class getRepositoryClass() { return QPersonRepository.class;