Skip to content

Commit 472beaf

Browse files
committed
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);
1 parent d6d8a13 commit 472beaf

File tree

3 files changed

+54
-2
lines changed

3 files changed

+54
-2
lines changed

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

+2
Original file line numberDiff line numberDiff line change
@@ -178,10 +178,12 @@ private Criteria from(Type type, MongoPersistentProperty property, Criteria crit
178178
PotentiallyConvertingIterator parameters) {
179179

180180
switch (type) {
181+
case AFTER:
181182
case GREATER_THAN:
182183
return criteria.gt(parameters.nextConverted(property));
183184
case GREATER_THAN_EQUAL:
184185
return criteria.gte(parameters.nextConverted(property));
186+
case BEFORE:
185187
case LESS_THAN:
186188
return criteria.lt(parameters.nextConverted(property));
187189
case LESS_THAN_EQUAL:

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

+36-2
Original file line numberDiff line numberDiff line change
@@ -436,10 +436,44 @@ public void executesQueryWithDBRefReferenceCorrectly() {
436436
* @see DATAMONGO-425
437437
*/
438438
@Test
439-
public void bindsDateParameterForDerivedQueryCorrectly() {
439+
public void bindsDateParameterForLessThanPredicateCorrectly() {
440440

441441
List<Person> result = repository.findByCreatedAtLessThan(boyd.createdAt);
442-
assertThat(result.isEmpty(), is(false));
442+
assertThat(result.size(), is(3));
443+
assertThat(result, hasItems(dave, oliver, carter));
444+
}
445+
446+
/**
447+
* @see DATAMONGO-425
448+
*/
449+
@Test
450+
public void bindsDateParameterForGreaterThanPredicateCorrectly() {
451+
452+
List<Person> result = repository.findByCreatedAtGreaterThan(carter.createdAt);
453+
assertThat(result.size(), is(4));
454+
assertThat(result, hasItems(boyd, stefan, leroi, alicia));
455+
}
456+
457+
/**
458+
* @see DATAMONGO-427
459+
*/
460+
@Test
461+
public void bindsDateParameterToBeforePredicateCorrectly() {
462+
463+
List<Person> result = repository.findByCreatedAtBefore(boyd.createdAt);
464+
assertThat(result.size(), is(3));
465+
assertThat(result, hasItems(dave, oliver, carter));
466+
}
467+
468+
/**
469+
* @see DATAMONGO-427
470+
*/
471+
@Test
472+
public void bindsDateParameterForAfterPredicateCorrectly() {
473+
474+
List<Person> result = repository.findByCreatedAtAfter(carter.createdAt);
475+
assertThat(result.size(), is(4));
476+
assertThat(result, hasItems(boyd, stefan, leroi, alicia));
443477
}
444478

445479
/**

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

+16
Original file line numberDiff line numberDiff line change
@@ -160,9 +160,25 @@ public interface PersonRepository extends MongoRepository<Person, String>, Query
160160
*/
161161
List<Person> findByCreatedAtLessThan(Date date);
162162

163+
/**
164+
* @see DATAMONGO-425
165+
*/
166+
List<Person> findByCreatedAtGreaterThan(Date date);
167+
163168
/**
164169
* @see DATAMONGO-425
165170
*/
166171
@Query("{ 'createdAt' : { '$lt' : ?0 }}")
167172
List<Person> findByCreatedAtLessThanManually(Date date);
173+
174+
/**
175+
* @see DATAMONGO-427
176+
*/
177+
List<Person> findByCreatedAtBefore(Date date);
178+
179+
/**
180+
* @see DATAMONGO-427
181+
*/
182+
List<Person> findByCreatedAtAfter(Date date);
183+
168184
}

0 commit comments

Comments
 (0)