Browse Source

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);
pull/2/merge
Oliver Gierke 14 years ago
parent
commit
472beaf6d2
  1. 2
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoQueryCreator.java
  2. 38
      spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/AbstractPersonRepositoryIntegrationTests.java
  3. 16
      spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/PersonRepository.java

2
spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoQueryCreator.java

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

38
spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/AbstractPersonRepositoryIntegrationTests.java

@ -436,10 +436,44 @@ public abstract class AbstractPersonRepositoryIntegrationTests { @@ -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));
}
/**

16
spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/PersonRepository.java

@ -160,9 +160,25 @@ public interface PersonRepository extends MongoRepository<Person, String>, Query @@ -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);
}

Loading…
Cancel
Save