diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/StringBasedMongoQuery.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/StringBasedMongoQuery.java index cb40c0f8f..b421b92a2 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/StringBasedMongoQuery.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/StringBasedMongoQuery.java @@ -74,6 +74,8 @@ public class StringBasedMongoQuery extends AbstractMongoQuery { } else { query = new BasicQuery(queryString); } + + QueryUtils.applySorting(query, accessor.getSort()); if (LOG.isDebugEnabled()) { LOG.debug(String.format("Created query %s", 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 5890ca376..e2262fcd2 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 @@ -365,4 +365,22 @@ public abstract class AbstractPersonRepositoryIntegrationTests { Metrics.KILOMETERS)); assertThat(results.getContent().isEmpty(), is(false)); } + + /** + * @see DATAMONGO-323 + */ + @Test + public void considersSortForAnnotatedQuery() { + + List result = repository.findByAgeLessThan(60, new Sort("firstname")); + + assertThat(result.size(), is(7)); + assertThat(result.get(0), is(alicia)); + assertThat(result.get(1), is(boyd)); + assertThat(result.get(2), is(carter)); + assertThat(result.get(3), is(dave)); + assertThat(result.get(4), is(leroi)); + assertThat(result.get(5), is(oliver)); + assertThat(result.get(6), is(stefan)); + } } \ 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 8fcd211a2..4968c649f 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 @@ -72,6 +72,9 @@ public interface PersonRepository extends MongoRepository, Query List findByFirstnameLike(String firstname); List findByFirstnameLikeOrderByLastnameAsc(String firstname, Sort sort); + + @Query("{'age' : { '$lt' : ?0 } }") + List findByAgeLessThan(int age, Sort sort); /** * Returns a page of {@link Person}s with a lastname mathing the given one (*-wildcards supported).