44 lines
1.3 KiB
Java
44 lines
1.3 KiB
Java
package com.baeldung.persistence.dao;
|
|
|
|
import java.util.List;
|
|
|
|
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.springframework.stereotype.Repository;
|
|
|
|
import com.baeldung.persistence.model.User;
|
|
import com.baeldung.web.util.SearchCriteria;
|
|
|
|
@Repository
|
|
public class UserDAO implements IUserDAO {
|
|
|
|
@PersistenceContext
|
|
private EntityManager entityManager;
|
|
|
|
@Override
|
|
public List<User> searchUser(final List<SearchCriteria> 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();
|
|
UserSearchQueryCriteriaConsumer searchConsumer = new UserSearchQueryCriteriaConsumer(predicate, builder, r);
|
|
params.stream().forEach(searchConsumer);
|
|
predicate = searchConsumer.getPredicate();
|
|
query.where(predicate);
|
|
|
|
return entityManager.createQuery(query).getResultList();
|
|
}
|
|
|
|
@Override
|
|
public void save(final User entity) {
|
|
entityManager.persist(entity);
|
|
}
|
|
|
|
}
|