DATAJPA-188 - Added support for After and Before query creation.

This commit is contained in:
Oliver Gierke
2012-04-10 18:24:20 +02:00
parent 3604ee45f3
commit 0ff84c94e8
5 changed files with 55 additions and 3 deletions

View File

@@ -15,6 +15,7 @@
*/
package org.springframework.data.jpa.domain.sample;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
@@ -27,6 +28,8 @@ import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQuery;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
/**
* Domain class representing a person emphasizing the use of {@code AbstractEntity}. No declaration of an id is
@@ -38,8 +41,6 @@ import javax.persistence.NamedQuery;
@NamedQuery(name = "User.findByEmailAddress", query = "SELECT u FROM User u WHERE u.emailAddress = ?1")
public class User {
private static final long serialVersionUID = 8653688953355455933L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@@ -47,6 +48,8 @@ public class User {
private String lastname;
private int age;
private boolean active;
@Temporal(TemporalType.TIMESTAMP)
private Date createdAt;
@Column(nullable = false, unique = true)
private String emailAddress;
@@ -67,6 +70,7 @@ public class User {
this.roles = new HashSet<Role>();
this.colleagues = new HashSet<User>();
this.createdAt = new Date();
}
/**
@@ -270,6 +274,13 @@ public class User {
this.manager = manager;
}
/**
* @return the createdAt
*/
public Date getCreatedAt() {
return createdAt;
}
/*
* (non-Javadoc)
*

View File

@@ -77,12 +77,13 @@ public class UserRepositoryTests {
Integer id;
@Before
public void setUp() {
public void setUp() throws Exception {
firstUser = new User("Oliver", "Gierke", "gierke@synyx.de");
firstUser.setAge(28);
secondUser = new User("Joachim", "Arrasz", "arrasz@synyx.de");
secondUser.setAge(35);
Thread.sleep(10);
thirdUser = new User("Dave", "Matthews", "no@email.com");
thirdUser.setAge(43);
}
@@ -752,6 +753,32 @@ public class UserRepositoryTests {
assertThat(result, hasItem(thirdUser));
}
/**
* @see DATAJPA-188
*/
@Test
public void executesFinderWithAfterKeywordCorrectly() {
flushTestUsers();
List<User> result = repository.findByCreatedAtAfter(secondUser.getCreatedAt());
assertThat(result.size(), is(1));
assertThat(result, hasItems(thirdUser));
}
/**
* @see DATAJPA-188
*/
@Test
public void executesFinderWithBeforeKeywordCorrectly() {
flushTestUsers();
List<User> result = repository.findByCreatedAtBefore(thirdUser.getCreatedAt());
assertThat(result.size(), is(2));
assertThat(result, hasItems(firstUser, secondUser));
}
protected void flushTestUsers() {
firstUser = repository.save(firstUser);

View File

@@ -16,6 +16,7 @@
package org.springframework.data.jpa.repository.sample;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import javax.persistence.QueryHint;
@@ -213,4 +214,14 @@ public interface UserRepository extends JpaRepository<User, Integer>, JpaSpecifi
*/
// @Query("select u.colleagues from User u where u = ?1")
// List<User> findColleaguesFor(User user);
/**
* @see DATAJPA-188
*/
List<User> findByCreatedAtBefore(Date date);
/**
* @see DATAJPA-188
*/
List<User> findByCreatedAtAfter(Date date);
}