DATADOC-31 - Added 'Between' keyword support for query parser.

Updated test sample entity and repository accordingly.
This commit is contained in:
Oliver Gierke
2010-12-16 15:16:31 +01:00
parent d28ee80efb
commit 3d4f33d93c
4 changed files with 51 additions and 5 deletions

View File

@@ -129,6 +129,8 @@ class MongoQueryCreator extends AbstractQueryCreator<DBObject, QueryBuilder> {
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:

View File

@@ -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<Person> result = repository.findByAgeBetween(40, 45);
assertThat(result.size(), is(2));
assertThat(result, hasItems(dave, leroi));
}
}

View File

@@ -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)
*

View File

@@ -56,4 +56,14 @@ public interface PersonRepository extends MongoRepository<Person, Long> {
* @return
*/
Page<Person> findByLastnameLike(String lastname, Pageable pageable);
/**
* Returns all {@link Person}s with an age between the two given values.
*
* @param from
* @param to
* @return
*/
List<Person> findByAgeBetween(int from, int to);
}