* BAEL-2474

* rename UserRepositoryImpl.java into UserRepositoryCustomImpl.java
This commit is contained in:
myluckagain
2019-01-08 19:36:42 +05:00
committed by Diego Moreira
parent 802e2b0398
commit 5faa406cb0
4 changed files with 93 additions and 18 deletions
@@ -1,6 +1,7 @@
package com.baeldung.dao.repositories.user;
import com.baeldung.domain.user.User;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
@@ -13,7 +14,7 @@ import java.util.Collection;
import java.util.List;
import java.util.stream.Stream;
public interface UserRepository extends JpaRepository<User, Integer> {
public interface UserRepository extends JpaRepository<User, Integer> , UserRepositoryCustom{
Stream<User> findAllByName(String name);
@@ -0,0 +1,10 @@
package com.baeldung.dao.repositories.user;
import java.util.List;
import java.util.Set;
import com.baeldung.domain.user.User;
public interface UserRepositoryCustom {
List<User> findUserByEmails(Set<String> emails);
}
@@ -0,0 +1,43 @@
package com.baeldung.dao.repositories.user;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Path;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import com.baeldung.domain.user.User;
public class UserRepositoryCustomImpl implements UserRepositoryCustom {
@PersistenceContext
private EntityManager entityManager;
@Override
public List<User> findUserByEmails(Set<String> emails) {
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<User> query = cb.createQuery(User.class);
Root<User> user = query.from(User.class);
Path<String> emailPath = user.get("email");
List<Predicate> predicates = new ArrayList<>();
for (String email : emails) {
predicates.add(cb.like(emailPath, email));
}
query.select(user)
.where(cb.or(predicates.toArray(new Predicate[predicates.size()])));
return entityManager.createQuery(query)
.getResultList();
}
}