diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/repository/MongoQueryCreator.java b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/repository/MongoQueryCreator.java index 1b025a07d..8af9eefca 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/repository/MongoQueryCreator.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/repository/MongoQueryCreator.java @@ -129,6 +129,8 @@ class MongoQueryCreator extends AbstractQueryCreator { return criteria.greaterThan(parameters.next()); case LESS_THAN: return criteria.lessThan(parameters.next()); + case BETWEEN: + return criteria.greaterThan(parameters.next()).lessThan(parameters.next()); case IS_NOT_NULL: return criteria.notEquals(null); case IS_NULL: diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/AbstractPersonRepositoryIntegrationTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/AbstractPersonRepositoryIntegrationTests.java index e8615d559..08c948978 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/AbstractPersonRepositoryIntegrationTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/AbstractPersonRepositoryIntegrationTests.java @@ -32,11 +32,11 @@ public abstract class AbstractPersonRepositoryIntegrationTests { repository.deleteAll(); - dave = new Person("Dave", "Matthews"); - carter = new Person("Carter", "Beauford"); - boyd = new Person("Boyd", "Tinsley"); - stefan = new Person("Stefan", "Lessard"); - leroi = new Person("Leroi", "Moore"); + dave = new Person("Dave", "Matthews", 42); + carter = new Person("Carter", "Beauford", 49); + boyd = new Person("Boyd", "Tinsley", 45); + stefan = new Person("Stefan", "Lessard", 34); + leroi = new Person("Leroi", "Moore", 41); repository.save(Arrays.asList(dave, carter, boyd, stefan, leroi)); } @@ -80,4 +80,12 @@ public abstract class AbstractPersonRepositoryIntegrationTests { assertThat(page, hasItems(carter, stefan)); } + + @Test + public void findsPersonInAgeRangeCorrectly() throws Exception { + + List result = repository.findByAgeBetween(40, 45); + assertThat(result.size(), is(2)); + assertThat(result, hasItems(dave, leroi)); + } } \ No newline at end of file diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/Person.java b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/Person.java index 520ced0c9..4e863d38d 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/Person.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/Person.java @@ -28,6 +28,7 @@ public class Person { private String id; private String firstname; private String lastname; + private Integer age; public Person() { @@ -38,9 +39,16 @@ public class Person { public Person(String firstname, String lastname) { + this(firstname, lastname, null); + } + + + public Person(String firstname, String lastname, Integer age) { + this.id = ObjectId.get().toString(); this.firstname = firstname; this.lastname = lastname; + this.age = age; } @@ -98,6 +106,24 @@ public class Person { } + /** + * @return the age + */ + public Integer getAge() { + + return age; + } + + + /** + * @param age the age to set + */ + public void setAge(Integer age) { + + this.age = age; + } + + /* * (non-Javadoc) * diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/PersonRepository.java b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/PersonRepository.java index bf16b1f0c..43013d32d 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/PersonRepository.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/PersonRepository.java @@ -56,4 +56,14 @@ public interface PersonRepository extends MongoRepository { * @return */ Page findByLastnameLike(String lastname, Pageable pageable); + + + /** + * Returns all {@link Person}s with an age between the two given values. + * + * @param from + * @param to + * @return + */ + List findByAgeBetween(int from, int to); }