diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoQueryCreator.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoQueryCreator.java index 58fae222f..8dfe9effa 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoQueryCreator.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoQueryCreator.java @@ -178,10 +178,12 @@ class MongoQueryCreator extends AbstractQueryCreator { PotentiallyConvertingIterator parameters) { switch (type) { + case AFTER: case GREATER_THAN: return criteria.gt(parameters.nextConverted(property)); case GREATER_THAN_EQUAL: return criteria.gte(parameters.nextConverted(property)); + case BEFORE: case LESS_THAN: return criteria.lt(parameters.nextConverted(property)); case LESS_THAN_EQUAL: 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 072177203..35c3c5e01 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 @@ -436,10 +436,44 @@ public abstract class AbstractPersonRepositoryIntegrationTests { * @see DATAMONGO-425 */ @Test - public void bindsDateParameterForDerivedQueryCorrectly() { + public void bindsDateParameterForLessThanPredicateCorrectly() { List result = repository.findByCreatedAtLessThan(boyd.createdAt); - assertThat(result.isEmpty(), is(false)); + assertThat(result.size(), is(3)); + assertThat(result, hasItems(dave, oliver, carter)); + } + + /** + * @see DATAMONGO-425 + */ + @Test + public void bindsDateParameterForGreaterThanPredicateCorrectly() { + + List result = repository.findByCreatedAtGreaterThan(carter.createdAt); + assertThat(result.size(), is(4)); + assertThat(result, hasItems(boyd, stefan, leroi, alicia)); + } + + /** + * @see DATAMONGO-427 + */ + @Test + public void bindsDateParameterToBeforePredicateCorrectly() { + + List result = repository.findByCreatedAtBefore(boyd.createdAt); + assertThat(result.size(), is(3)); + assertThat(result, hasItems(dave, oliver, carter)); + } + + /** + * @see DATAMONGO-427 + */ + @Test + public void bindsDateParameterForAfterPredicateCorrectly() { + + List result = repository.findByCreatedAtAfter(carter.createdAt); + assertThat(result.size(), is(4)); + assertThat(result, hasItems(boyd, stefan, leroi, alicia)); } /** 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 43165e6a4..e532b5ad7 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 @@ -160,9 +160,25 @@ public interface PersonRepository extends MongoRepository, Query */ List findByCreatedAtLessThan(Date date); + /** + * @see DATAMONGO-425 + */ + List findByCreatedAtGreaterThan(Date date); + /** * @see DATAMONGO-425 */ @Query("{ 'createdAt' : { '$lt' : ?0 }}") List findByCreatedAtLessThanManually(Date date); + + /** + * @see DATAMONGO-427 + */ + List findByCreatedAtBefore(Date date); + + /** + * @see DATAMONGO-427 + */ + List findByCreatedAtAfter(Date date); + }