diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/MongoQueryCreator.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/MongoQueryCreator.java index 580642070..18cf6076d 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/MongoQueryCreator.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/MongoQueryCreator.java @@ -106,6 +106,8 @@ class MongoQueryCreator extends AbstractQueryCreator { @Override protected Query complete(Query query, Sort sort) { + QueryUtils.applySorting(query, sort); + if (LOG.isDebugEnabled()) { LOG.debug("Created query " + query.getQueryObject()); } diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/AbstractPersonRepositoryIntegrationTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/AbstractPersonRepositoryIntegrationTests.java index f4928ec4d..9c656ae72 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/AbstractPersonRepositoryIntegrationTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/AbstractPersonRepositoryIntegrationTests.java @@ -17,6 +17,7 @@ import org.springframework.data.mongodb.repository.QPerson; import org.springframework.data.mongodb.repository.Person.Sex; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort.Direction; import org.springframework.data.mongodb.core.geo.Box; import org.springframework.data.mongodb.core.geo.Circle; @@ -291,11 +292,29 @@ public abstract class AbstractPersonRepositoryIntegrationTests { repository.save(daveSyer); } -// @Test + /** + * @see DATADOC-236 + */ + @Test public void findsPeopleByLastnameAndOrdersCorrectly() { List result = repository.findByLastnameOrderByFirstnameAsc("Matthews"); assertThat(result.size(), is(2)); assertThat(result.get(0), is(dave)); assertThat(result.get(1), is(oliver)); } + + /** + * @see DATADOC-236 + */ + @Test + public void appliesStaticAndDynamicSorting() { + List result = repository.findByFirstnameLikeOrderByLastnameAsc("*e*", new Sort("age")); + assertThat(result.size(), is(5)); + assertThat(result.get(0), is(carter)); + assertThat(result.get(1), is(stefan)); + assertThat(result.get(2), is(oliver)); + assertThat(result.get(3), is(dave)); + assertThat(result.get(4), is(leroi)); + } + } \ No newline at end of file diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/PersonRepository.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/PersonRepository.java index 20512e44a..7dac2f006 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/PersonRepository.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/PersonRepository.java @@ -20,6 +20,7 @@ import java.util.List; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Sort; import org.springframework.data.mongodb.core.geo.Box; import org.springframework.data.mongodb.core.geo.Circle; import org.springframework.data.mongodb.core.geo.Point; @@ -68,6 +69,8 @@ public interface PersonRepository extends MongoRepository, Query * @return */ List findByFirstnameLike(String firstname); + + List findByFirstnameLikeOrderByLastnameAsc(String firstname, Sort sort); /** * Returns a page of {@link Person}s with a lastname mathing the given one (*-wildcards supported).