From 30386210c4fed20bf9d458b1bd549d4ef812de88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eddu=CC=81=20Mele=CC=81ndez?= Date: Mon, 1 Dec 2014 23:26:39 -0500 Subject: [PATCH] #39 - Added example of SpEL usage in manually defined JPA queries. --- .../jpa/simple/SimpleUserRepository.java | 9 +++++++ .../jpa/simple/SimpleUserRepositoryTests.java | 26 +++++++++++++++++-- 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/jpa/example/src/main/java/example/springdata/jpa/simple/SimpleUserRepository.java b/jpa/example/src/main/java/example/springdata/jpa/simple/SimpleUserRepository.java index 858d72b0..fb8c49a8 100644 --- a/jpa/example/src/main/java/example/springdata/jpa/simple/SimpleUserRepository.java +++ b/jpa/example/src/main/java/example/springdata/jpa/simple/SimpleUserRepository.java @@ -118,4 +118,13 @@ public interface SimpleUserRepository extends CrudRepository { * @return */ List findTop2By(Sort sort); + + /** + * Return all the users with the given firstname or lastname. Makes use of SpEL (Spring Expression Language). + * + * @param user + * @return + */ + @Query("select u from User u where u.firstname = :#{#user.firstname} or u.lastname = :#{#user.lastname}") + Iterable findByFirstnameOrLastname(@Param("user") User user); } diff --git a/jpa/example/src/test/java/example/springdata/jpa/simple/SimpleUserRepositoryTests.java b/jpa/example/src/test/java/example/springdata/jpa/simple/SimpleUserRepositoryTests.java index 14310902..13963517 100644 --- a/jpa/example/src/test/java/example/springdata/jpa/simple/SimpleUserRepositoryTests.java +++ b/jpa/example/src/test/java/example/springdata/jpa/simple/SimpleUserRepositoryTests.java @@ -15,8 +15,7 @@ */ package example.springdata.jpa.simple; -import static org.hamcrest.CoreMatchers.*; -import static org.hamcrest.collection.IsIterableContainingInOrder.*; +import static org.hamcrest.Matchers.*; import static org.junit.Assert.*; import static org.springframework.data.domain.Sort.Direction.*; @@ -185,4 +184,27 @@ public class SimpleUserRepositoryTests { assertThat(resultDesc.size(), is(2)); assertThat(resultDesc, hasItems(user1, user2)); } + + @Test + public void findByFirstnameOrLastnameUsingSpEL() { + + User first = new User(); + first.setLastname("lastname"); + + User second = new User(); + second.setFirstname("firstname"); + + User third = new User(); + + repository.save(Arrays.asList(first, second, third)); + + User reference = new User(); + reference.setFirstname("firstname"); + reference.setLastname("lastname"); + + Iterable users = repository.findByFirstnameOrLastname(reference); + + assertThat(users, is(iterableWithSize(2))); + assertThat(users, hasItems(first, second)); + } }