DATAJPA-108 - Added support for GreaterThanEqual and LessThanEqual.

This commit is contained in:
Oliver Gierke
2011-10-11 18:15:25 +02:00
parent 515a85f005
commit 54f8cb8700
4 changed files with 46 additions and 0 deletions

View File

@@ -306,8 +306,12 @@ public class JpaQueryCreator extends AbstractQueryCreator<CriteriaQuery<Object>,
return builder.between(getComparablePath(root, part), first, second);
case GREATER_THAN:
return builder.greaterThan(getComparablePath(root, part), provider.next(Comparable.class));
case GREATER_THAN_EQUAL:
return builder.greaterThanOrEqualTo(getComparablePath(root, part), provider.next(Comparable.class));
case LESS_THAN:
return builder.lessThan(getComparablePath(root, part), provider.next(Comparable.class));
case LESS_THAN_EQUAL:
return builder.lessThanOrEqualTo(getComparablePath(root, part), provider.next(Comparable.class));
case IS_NULL:
return path.isNull();
case IS_NOT_NULL:

View File

@@ -45,6 +45,7 @@ public class User {
private Integer id;
private String firstname;
private String lastname;
private int age;
@Column(nullable = false, unique = true)
private String emailAddress;
@@ -138,6 +139,20 @@ public class User {
this.lastname = lastname;
}
/**
* @return the age
*/
public int getAge() {
return age;
}
/**
* @param age the age to set
*/
public void setAge(int age) {
this.age = age;
}
/**
* Returns the email address.
*

View File

@@ -80,8 +80,11 @@ public class UserRepositoryTests {
public void setUp() {
firstUser = new User("Oliver", "Gierke", "gierke@synyx.de");
firstUser.setAge(28);
secondUser = new User("Joachim", "Arrasz", "arrasz@synyx.de");
secondUser.setAge(35);
thirdUser = new User("Dave", "Matthews", "no@email.com");
thirdUser.setAge(43);
}
/**
@@ -737,6 +740,26 @@ public class UserRepositoryTests {
assertThat(result.getTotalPages(), is(1));
}
@Test
public void executesLessThatOrEqualQueriesCorrectly() {
flushTestUsers();
List<User> result = repository.findByAgeLessThanEqual(35);
assertThat(result.size(), is(2));
assertThat(result, hasItems(firstUser, secondUser));
}
@Test
public void executesGreaterThatOrEqualQueriesCorrectly() {
flushTestUsers();
List<User> result = repository.findByAgeGreaterThanEqual(35);
assertThat(result.size(), is(2));
assertThat(result, hasItems(secondUser, thirdUser));
}
private Page<User> executeSpecWithSort(Sort sort) {
flushTestUsers();

View File

@@ -185,6 +185,10 @@ public interface UserRepository extends JpaRepository<User, Integer>, JpaSpecifi
List<User> findByLastnameAndFirstnameAllIgnoringCase(String lastname, String firstname);
List<User> findByAgeGreaterThanEqual(int age);
List<User> findByAgeLessThanEqual(int age);
/**
* @see DATADOC-86 - Count execution for group by
*/