modify query code
This commit is contained in:
		
							parent
							
								
									92e593c2b4
								
							
						
					
					
						commit
						5ce7ecc629
					
				| @ -0,0 +1,12 @@ | ||||
| package org.baeldung.persistence.dao; | ||||
| 
 | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
| 
 | ||||
| import org.baeldung.persistence.model.User; | ||||
| 
 | ||||
| public interface IUserDAO { | ||||
|     List<User> searchUser(Map<String, Object> params); | ||||
| 
 | ||||
|     void save(User entity); | ||||
| } | ||||
| @ -0,0 +1,49 @@ | ||||
| package org.baeldung.persistence.dao; | ||||
| 
 | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
| 
 | ||||
| import javax.persistence.EntityManager; | ||||
| import javax.persistence.PersistenceContext; | ||||
| import javax.persistence.criteria.CriteriaBuilder; | ||||
| import javax.persistence.criteria.CriteriaQuery; | ||||
| import javax.persistence.criteria.Predicate; | ||||
| import javax.persistence.criteria.Root; | ||||
| 
 | ||||
| import org.baeldung.persistence.model.User; | ||||
| import org.springframework.stereotype.Repository; | ||||
| 
 | ||||
| @Repository | ||||
| public class UserDAO implements IUserDAO { | ||||
| 
 | ||||
|     @PersistenceContext | ||||
|     private EntityManager entityManager; | ||||
| 
 | ||||
|     @Override | ||||
|     public List<User> searchUser(final Map<String, Object> params) { | ||||
|         final CriteriaBuilder builder = entityManager.getCriteriaBuilder(); | ||||
|         final CriteriaQuery<User> query = builder.createQuery(User.class); | ||||
|         final Root r = query.from(User.class); | ||||
| 
 | ||||
|         Predicate predicate = builder.conjunction(); | ||||
| 
 | ||||
|         for (final Map.Entry<String, Object> param: params.entrySet()){ | ||||
|             if (param.getKey().equalsIgnoreCase("age")) { | ||||
|                 predicate = builder.and(predicate, builder.greaterThanOrEqualTo(r.get(param.getKey()), Integer.parseInt(param.getValue().toString()))); | ||||
|             } | ||||
|             else{ | ||||
|                 predicate = builder.and(predicate, builder.like(r.get(param.getKey()), "%" + param.getValue() + "%")); | ||||
|             } | ||||
|         } | ||||
|         query.where(predicate); | ||||
| 
 | ||||
|         final List<User> result = entityManager.createQuery(query).getResultList(); | ||||
|         return result; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public void save(final User entity) { | ||||
|         entityManager.persist(entity); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,9 @@ | ||||
| package org.baeldung.persistence.dao; | ||||
| 
 | ||||
| import org.baeldung.persistence.model.User; | ||||
| import org.springframework.data.jpa.repository.JpaRepository; | ||||
| import org.springframework.data.jpa.repository.JpaSpecificationExecutor; | ||||
| 
 | ||||
| public interface UserRepository extends JpaRepository<User, Long>, JpaSpecificationExecutor<User> { | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,45 @@ | ||||
| package org.baeldung.persistence.dao; | ||||
| 
 | ||||
| import javax.persistence.criteria.CriteriaBuilder; | ||||
| import javax.persistence.criteria.CriteriaQuery; | ||||
| import javax.persistence.criteria.Predicate; | ||||
| import javax.persistence.criteria.Root; | ||||
| 
 | ||||
| import org.baeldung.persistence.model.User; | ||||
| import org.baeldung.persistence.model.User_; | ||||
| import org.springframework.data.jpa.domain.Specification; | ||||
| 
 | ||||
| public class UserSpecifications { | ||||
|     public static Specification<User> firstNameIsLike(final String term) { | ||||
| 
 | ||||
|         return new Specification<User>() { | ||||
|             @Override | ||||
|             public Predicate toPredicate(final Root<User> root, final CriteriaQuery<?> query, final CriteriaBuilder cb) { | ||||
|                 return cb.like(root.get(User_.firstName), "%"+term+"%"); | ||||
|             } | ||||
| 
 | ||||
|         }; | ||||
|     } | ||||
| 
 | ||||
|     public static Specification<User> lastNameIsLike(final String term) { | ||||
| 
 | ||||
|         return new Specification<User>() { | ||||
|             @Override | ||||
|             public Predicate toPredicate(final Root<User> root, final CriteriaQuery<?> query, final CriteriaBuilder cb) { | ||||
|                 return cb.like(root.get(User_.lastName), "%" + term + "%"); | ||||
|             } | ||||
| 
 | ||||
|         }; | ||||
|     } | ||||
| 
 | ||||
|     public static Specification<User> ageIsGreaterThan(final int minAge) { | ||||
| 
 | ||||
|         return new Specification<User>() { | ||||
|             @Override | ||||
|             public Predicate toPredicate(final Root<User> root, final CriteriaQuery<?> query, final CriteriaBuilder cb) { | ||||
|                 return cb.greaterThanOrEqualTo(root.get(User_.age), minAge); | ||||
|             } | ||||
| 
 | ||||
|         }; | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,46 @@ | ||||
| package org.baeldung.persistence.dao; | ||||
| 
 | ||||
| import static org.baeldung.persistence.dao.UserSpecifications.ageIsGreaterThan; | ||||
| import static org.baeldung.persistence.dao.UserSpecifications.firstNameIsLike; | ||||
| import static org.baeldung.persistence.dao.UserSpecifications.lastNameIsLike; | ||||
| 
 | ||||
| import java.util.ArrayList; | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
| 
 | ||||
| import org.baeldung.persistence.model.User; | ||||
| import org.springframework.data.jpa.domain.Specification; | ||||
| import org.springframework.data.jpa.domain.Specifications; | ||||
| 
 | ||||
| public class UserSpecificationsBuilder { | ||||
| 
 | ||||
|     public static Specification<User> buildUserSpecs(final Map<String, Object> params) { | ||||
|         if (params.size() == 0) | ||||
|             return null; | ||||
| 
 | ||||
|         final List<Specification<User>> specs = new ArrayList<Specification<User>>(); | ||||
|         String key, value; | ||||
| 
 | ||||
|         for (final Map.Entry<String, Object> param : params.entrySet()) { | ||||
|             key = param.getKey(); | ||||
|             value = param.getValue().toString(); | ||||
|             if (key.equalsIgnoreCase("age")) { | ||||
|                 specs.add(ageIsGreaterThan(Integer.parseInt(value))); | ||||
|             } else if (key.equalsIgnoreCase("firstName")) { | ||||
|                 specs.add(firstNameIsLike(value)); | ||||
|             } else if (key.equalsIgnoreCase("lastName")) { | ||||
|                 specs.add(lastNameIsLike(value)); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         if (specs.size() == 0) | ||||
|             return null; | ||||
| 
 | ||||
|         Specification<User> result = specs.get(0); | ||||
|         for (int i = 1; i < specs.size(); i++) { | ||||
|             result = Specifications.where(result).and(specs.get(i)); | ||||
|         } | ||||
|         return result; | ||||
| 
 | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,96 @@ | ||||
| package org.baeldung.persistence.model; | ||||
| 
 | ||||
| import javax.persistence.Entity; | ||||
| import javax.persistence.GeneratedValue; | ||||
| import javax.persistence.GenerationType; | ||||
| import javax.persistence.Id; | ||||
| 
 | ||||
| @Entity | ||||
| public class User { | ||||
| 
 | ||||
|     @Id | ||||
|     @GeneratedValue(strategy = GenerationType.AUTO) | ||||
|     private Long id; | ||||
| 
 | ||||
|     private String firstName; | ||||
| 
 | ||||
|     private String lastName; | ||||
| 
 | ||||
|     private String email; | ||||
| 
 | ||||
|     private int age; | ||||
| 
 | ||||
|     public User() { | ||||
|         super(); | ||||
|     } | ||||
| 
 | ||||
|     public Long getId() { | ||||
|         return id; | ||||
|     } | ||||
| 
 | ||||
|     public void setId(final Long id) { | ||||
|         this.id = id; | ||||
|     } | ||||
| 
 | ||||
|     public String getFirstName() { | ||||
|         return firstName; | ||||
|     } | ||||
| 
 | ||||
|     public void setFirstName(final String firstName) { | ||||
|         this.firstName = firstName; | ||||
|     } | ||||
| 
 | ||||
|     public String getLastName() { | ||||
|         return lastName; | ||||
|     } | ||||
| 
 | ||||
|     public void setLastName(final String lastName) { | ||||
|         this.lastName = lastName; | ||||
|     } | ||||
| 
 | ||||
|     public String getEmail() { | ||||
|         return email; | ||||
|     } | ||||
| 
 | ||||
|     public void setEmail(final String username) { | ||||
|         email = username; | ||||
|     } | ||||
| 
 | ||||
|     public int getAge() { | ||||
|         return age; | ||||
|     } | ||||
| 
 | ||||
|     public void setAge(final int age) { | ||||
|         this.age = age; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public int hashCode() { | ||||
|         final int prime = 31; | ||||
|         int result = 1; | ||||
|         result = prime * result + ((email == null) ? 0 : email.hashCode()); | ||||
|         return result; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public boolean equals(final Object obj) { | ||||
|         if (this == obj) | ||||
|             return true; | ||||
|         if (obj == null) | ||||
|             return false; | ||||
|         if (getClass() != obj.getClass()) | ||||
|             return false; | ||||
|         final User user = (User) obj; | ||||
|         if (!email.equals(user.email)) | ||||
|             return false; | ||||
|         return true; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public String toString() { | ||||
|         final StringBuilder builder = new StringBuilder(); | ||||
|         builder.append("User [firstName=").append(firstName).append("]").append("[lastName=").append(lastName).append("]").append("[username").append(email).append("]"); | ||||
|         return builder.toString(); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,11 @@ | ||||
| package org.baeldung.persistence.model; | ||||
| 
 | ||||
| import javax.persistence.metamodel.SingularAttribute; | ||||
| import javax.persistence.metamodel.StaticMetamodel; | ||||
| 
 | ||||
| @StaticMetamodel(User.class) | ||||
| public class User_ { | ||||
|     public static volatile SingularAttribute<User, String> firstName; | ||||
|     public static volatile SingularAttribute<User, String> lastName; | ||||
|     public static volatile SingularAttribute<User, Integer> age; | ||||
| } | ||||
| @ -0,0 +1,42 @@ | ||||
| package org.baeldung.persistence.service.impl; | ||||
| 
 | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
| 
 | ||||
| import org.baeldung.persistence.dao.IUserDAO; | ||||
| import org.baeldung.persistence.dao.UserRepository; | ||||
| import org.baeldung.persistence.dao.UserSpecificationsBuilder; | ||||
| import org.baeldung.persistence.model.User; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.data.jpa.domain.Specification; | ||||
| import org.springframework.stereotype.Service; | ||||
| import org.springframework.transaction.annotation.Transactional; | ||||
| 
 | ||||
| @Service | ||||
| @Transactional | ||||
| public class UserService { | ||||
|     @Autowired | ||||
|     private IUserDAO dao; | ||||
| 
 | ||||
|     @Autowired | ||||
|     private UserRepository repository; | ||||
| 
 | ||||
|     public UserService() { | ||||
|         super(); | ||||
|     } | ||||
| 
 | ||||
|     public void saveUser(final User user) { | ||||
|         dao.save(user); | ||||
|     } | ||||
| 
 | ||||
|     public List<User> searchUser(final Map<String, Object> params) { | ||||
|         return dao.searchUser(params); | ||||
|     } | ||||
| 
 | ||||
|     public List<User> searchBySpecification(final Map<String, Object> params) { | ||||
|         final Specification<User> spec = UserSpecificationsBuilder.buildUserSpecs(params); | ||||
|         if (spec == null) | ||||
|             return repository.findAll(); | ||||
|         return repository.findAll(spec); | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,69 @@ | ||||
| package org.baeldung.web.controller; | ||||
| 
 | ||||
| import java.util.HashMap; | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
| import java.util.regex.Matcher; | ||||
| import java.util.regex.Pattern; | ||||
| 
 | ||||
| import org.baeldung.persistence.model.User; | ||||
| import org.baeldung.persistence.service.impl.UserService; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.stereotype.Controller; | ||||
| import org.springframework.web.bind.annotation.RequestMapping; | ||||
| import org.springframework.web.bind.annotation.RequestMethod; | ||||
| import org.springframework.web.bind.annotation.RequestParam; | ||||
| import org.springframework.web.bind.annotation.ResponseBody; | ||||
| 
 | ||||
| @Controller | ||||
| public class UserController { | ||||
| 
 | ||||
|     @Autowired | ||||
|     private UserService service; | ||||
| 
 | ||||
|     public UserController() { | ||||
|         super(); | ||||
|     } | ||||
| 
 | ||||
|     @RequestMapping(method = RequestMethod.GET, value = "/users") | ||||
|     @ResponseBody | ||||
|     public List<User> findAll(@RequestParam(value = "search", required = false) final String search) { | ||||
|         final Map<String, Object> params = new HashMap<String, Object>(); | ||||
| 
 | ||||
|         if (search != null) { | ||||
|             final Pattern pattern = Pattern.compile("(\\w+?):(\\w+?),"); | ||||
|             final Matcher matcher = pattern.matcher(search + ","); | ||||
|             while (matcher.find()) { | ||||
|                 params.put(matcher.group(1), matcher.group(2)); | ||||
|             } | ||||
|         } | ||||
|         return service.searchUser(params); | ||||
|     } | ||||
| 
 | ||||
|     @RequestMapping(method = RequestMethod.GET, value = "/users/spec") | ||||
|     @ResponseBody | ||||
|     public List<User> findAllBySpecification(@RequestParam(value = "search", required = false) final String search) { | ||||
|         final Map<String, Object> params = new HashMap<String, Object>(); | ||||
| 
 | ||||
|         if (search != null) { | ||||
|             final Pattern pattern = Pattern.compile("(\\w+?):(\\w+?),"); | ||||
|             final Matcher matcher = pattern.matcher(search + ","); | ||||
|             while (matcher.find()) { | ||||
|                 params.put(matcher.group(1), matcher.group(2)); | ||||
|             } | ||||
|         } | ||||
|         return service.searchBySpecification(params); | ||||
|     } | ||||
| 
 | ||||
|     @RequestMapping(method = RequestMethod.GET, value = "/users/new") | ||||
|     @ResponseBody | ||||
|     public long addUser(@RequestParam("first") final String first, @RequestParam("last") final String last, @RequestParam("age") final int age) { | ||||
|         final User user = new User(); | ||||
|         user.setFirstName(first); | ||||
|         user.setLastName(last); | ||||
|         user.setEmail("john@doe.com"); | ||||
|         user.setAge(age); | ||||
|         service.saveUser(user); | ||||
|         return user.getId(); | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,105 @@ | ||||
| package org.baeldung.persistence.query; | ||||
| 
 | ||||
| import static org.junit.Assert.assertEquals; | ||||
| 
 | ||||
| import java.util.HashMap; | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
| 
 | ||||
| import org.baeldung.persistence.model.User; | ||||
| import org.baeldung.persistence.service.impl.UserService; | ||||
| import org.baeldung.spring.PersistenceConfig; | ||||
| import org.junit.Before; | ||||
| import org.junit.Test; | ||||
| import org.junit.runner.RunWith; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.test.context.ContextConfiguration; | ||||
| import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; | ||||
| import org.springframework.test.context.support.AnnotationConfigContextLoader; | ||||
| import org.springframework.test.context.transaction.TransactionConfiguration; | ||||
| import org.springframework.transaction.annotation.Transactional; | ||||
| 
 | ||||
| @RunWith(SpringJUnit4ClassRunner.class) | ||||
| @ContextConfiguration(classes = { PersistenceConfig.class }, loader = AnnotationConfigContextLoader.class) | ||||
| @Transactional | ||||
| @TransactionConfiguration | ||||
| public class JPACriteriaQueryTest { | ||||
| 
 | ||||
|     @Autowired | ||||
|     private UserService userService; | ||||
| 
 | ||||
|     private User userJohn; | ||||
| 
 | ||||
|     private User userTom; | ||||
| 
 | ||||
|     @Before | ||||
|     public void init() { | ||||
|         userJohn = new User(); | ||||
|         userJohn.setFirstName("John"); | ||||
|         userJohn.setLastName("Doe"); | ||||
|         userJohn.setEmail("john@doe.com"); | ||||
|         userJohn.setAge(22); | ||||
|         userService.saveUser(userJohn); | ||||
| 
 | ||||
|         userTom = new User(); | ||||
|         userTom.setFirstName("Tom"); | ||||
|         userTom.setLastName("Doe"); | ||||
|         userTom.setEmail("tom@doe.com"); | ||||
|         userTom.setAge(26); | ||||
|         userService.saveUser(userTom); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     public void givenFirstAndLastName_whenGettingListOfUsers_thenCorrect() { | ||||
|         final Map<String, Object> params = new HashMap<String, Object>(); | ||||
|         params.put("firstName", "John"); | ||||
|         params.put("lastName", "Doe"); | ||||
| 
 | ||||
|         final List<User> result = userService.searchUser(params); | ||||
| 
 | ||||
|         assertEquals(1, result.size()); | ||||
|         assertEquals(userJohn.getEmail(), result.get(0).getEmail()); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     public void givenLast_whenGettingListOfUsers_thenCorrect() { | ||||
|         final Map<String, Object> params = new HashMap<String, Object>(); | ||||
|         params.put("lastName", "doe"); | ||||
| 
 | ||||
|         final List<User> result = userService.searchUser(params); | ||||
|         assertEquals(2, result.size()); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     public void givenLastAndAge_whenGettingListOfUsers_thenCorrect() { | ||||
|         final Map<String, Object> params = new HashMap<String, Object>(); | ||||
|         params.put("lastName", "doe"); | ||||
|         params.put("age", "25"); | ||||
| 
 | ||||
|         final List<User> result = userService.searchUser(params); | ||||
| 
 | ||||
|         assertEquals(1, result.size()); | ||||
|         assertEquals(userTom.getEmail(), result.get(0).getEmail()); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     public void givenWrongFirstAndLast_whenGettingListOfUsers_thenCorrect() { | ||||
|         final Map<String, Object> params = new HashMap<String, Object>(); | ||||
|         params.put("firstName", "Adam"); | ||||
|         params.put("lastName", "Fox"); | ||||
| 
 | ||||
|         final List<User> result = userService.searchUser(params); | ||||
|         assertEquals(0, result.size()); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     public void givenPartialFirst_whenGettingListOfUsers_thenCorrect() { | ||||
|         final Map<String, Object> params = new HashMap<String, Object>(); | ||||
|         params.put("firstName", "jo"); | ||||
| 
 | ||||
|         final List<User> result = userService.searchUser(params); | ||||
| 
 | ||||
|         assertEquals(1, result.size()); | ||||
|         assertEquals(userJohn.getEmail(), result.get(0).getEmail()); | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,89 @@ | ||||
| package org.baeldung.persistence.query; | ||||
| 
 | ||||
| import static org.baeldung.persistence.dao.UserSpecifications.ageIsGreaterThan; | ||||
| import static org.baeldung.persistence.dao.UserSpecifications.firstNameIsLike; | ||||
| import static org.baeldung.persistence.dao.UserSpecifications.lastNameIsLike; | ||||
| import static org.junit.Assert.assertEquals; | ||||
| 
 | ||||
| import java.util.List; | ||||
| 
 | ||||
| import org.baeldung.persistence.dao.UserRepository; | ||||
| import org.baeldung.persistence.model.User; | ||||
| import org.baeldung.spring.PersistenceConfig; | ||||
| import org.junit.Before; | ||||
| import org.junit.Test; | ||||
| import org.junit.runner.RunWith; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.data.jpa.domain.Specifications; | ||||
| import org.springframework.test.context.ContextConfiguration; | ||||
| import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; | ||||
| import org.springframework.test.context.support.AnnotationConfigContextLoader; | ||||
| import org.springframework.test.context.transaction.TransactionConfiguration; | ||||
| import org.springframework.transaction.annotation.Transactional; | ||||
| 
 | ||||
| @RunWith(SpringJUnit4ClassRunner.class) | ||||
| @ContextConfiguration(classes = { PersistenceConfig.class }, loader = AnnotationConfigContextLoader.class) | ||||
| @Transactional | ||||
| @TransactionConfiguration | ||||
| public class JPASpecificationsTest { | ||||
| 
 | ||||
|     @Autowired | ||||
|     private UserRepository repository; | ||||
| 
 | ||||
|     private User userJohn; | ||||
| 
 | ||||
|     private User userTom; | ||||
| 
 | ||||
|     @Before | ||||
|     public void init() { | ||||
|         userJohn = new User(); | ||||
|         userJohn.setFirstName("John"); | ||||
|         userJohn.setLastName("Doe"); | ||||
|         userJohn.setEmail("john@doe.com"); | ||||
|         userJohn.setAge(22); | ||||
|         repository.save(userJohn); | ||||
| 
 | ||||
|         userTom = new User(); | ||||
|         userTom.setFirstName("Tom"); | ||||
|         userTom.setLastName("Doe"); | ||||
|         userTom.setEmail("tom@doe.com"); | ||||
|         userTom.setAge(26); | ||||
|         repository.save(userTom); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     public void givenLast_whenGettingListOfUsers_thenCorrect() { | ||||
|         final List<User> result = repository.findAll(lastNameIsLike("doe")); | ||||
|         assertEquals(2, result.size()); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     public void givenFirstAndLastName_whenGettingListOfUsers_thenCorrect() { | ||||
|         final List<User> result = repository.findAll(Specifications.where(lastNameIsLike("doe")).and(firstNameIsLike("john"))); | ||||
| 
 | ||||
|         assertEquals(1, result.size()); | ||||
|         assertEquals(userJohn.getEmail(), result.get(0).getEmail()); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     public void givenLastAndAge_whenGettingListOfUsers_thenCorrect() { | ||||
|         final List<User> result = repository.findAll(Specifications.where(lastNameIsLike("doe")).and(ageIsGreaterThan(25))); | ||||
| 
 | ||||
|         assertEquals(1, result.size()); | ||||
|         assertEquals(userTom.getEmail(), result.get(0).getEmail()); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     public void givenWrongFirstAndLast_whenGettingListOfUsers_thenCorrect() { | ||||
|         final List<User> result = repository.findAll(Specifications.where(lastNameIsLike("Adam")).and(firstNameIsLike("Fox"))); | ||||
|         assertEquals(0, result.size()); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     public void givenPartialFirst_whenGettingListOfUsers_thenCorrect() { | ||||
|         final List<User> result = repository.findAll(firstNameIsLike("jo")); | ||||
| 
 | ||||
|         assertEquals(1, result.size()); | ||||
|         assertEquals(userJohn.getEmail(), result.get(0).getEmail()); | ||||
|     } | ||||
| } | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user