DATAMONGO-427 - Added support for Before and After keywords for query creation.

The query creator now supports methods as follows: List<User> findByCreatedAtBefore(Date date);
This commit is contained in:
Oliver Gierke
2012-04-09 17:57:06 +02:00
parent d6d8a13b0c
commit 472beaf6d2
3 changed files with 54 additions and 2 deletions

View File

@@ -178,10 +178,12 @@ class MongoQueryCreator extends AbstractQueryCreator<Query, Criteria> {
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:

View File

@@ -436,10 +436,44 @@ public abstract class AbstractPersonRepositoryIntegrationTests {
* @see DATAMONGO-425
*/
@Test
public void bindsDateParameterForDerivedQueryCorrectly() {
public void bindsDateParameterForLessThanPredicateCorrectly() {
List<Person> 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<Person> 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<Person> result = repository.findByCreatedAtBefore(boyd.createdAt);
assertThat(result.size(), is(3));
assertThat(result, hasItems(dave, oliver, carter));
}
/**
* @see DATAMONGO-427
*/
@Test
public void bindsDateParameterForAfterPredicateCorrectly() {
List<Person> result = repository.findByCreatedAtAfter(carter.createdAt);
assertThat(result.size(), is(4));
assertThat(result, hasItems(boyd, stefan, leroi, alicia));
}
/**

View File

@@ -160,9 +160,25 @@ public interface PersonRepository extends MongoRepository<Person, String>, Query
*/
List<Person> findByCreatedAtLessThan(Date date);
/**
* @see DATAMONGO-425
*/
List<Person> findByCreatedAtGreaterThan(Date date);
/**
* @see DATAMONGO-425
*/
@Query("{ 'createdAt' : { '$lt' : ?0 }}")
List<Person> findByCreatedAtLessThanManually(Date date);
/**
* @see DATAMONGO-427
*/
List<Person> findByCreatedAtBefore(Date date);
/**
* @see DATAMONGO-427
*/
List<Person> findByCreatedAtAfter(Date date);
}