Skip to content

Instantly share code, notes, and snippets.

@brunodutr
Last active August 2, 2020 00:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save brunodutr/a147981fa31ec46c42b011be6ef4442b to your computer and use it in GitHub Desktop.
Save brunodutr/a147981fa31ec46c42b011be6ef4442b to your computer and use it in GitHub Desktop.
/**
* Query dinamica que filtra por nome e sobrenome
*
*/
public List<Pessoa> buscarPessoas(String nome, String sobrenome) {
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery<Pessoa> criteriaQuery = criteriaBuilder.createQuery(Pessoa.class);
Root<Pessoa> pessoaRoot = criteriaQuery.from(Pessoa.class);
List<Predicate> predicates = new ArrayList<>();
if(nome != null) {
predicates.add(criteriaBuilder.equal(pessoaRoot.get("nome"), nome));
}
if(sobrenome != null) {
predicates.add(criteriaBuilder.equal(pessoaRoot.get("sobrenome"), sobrenome));
}
criteriaQuery.where(predicates.toArray(new Predicate[predicates.size()]));
criteriaQuery.select(pessoaRoot);
TypedQuery<Pessoa> query = entityManager.createQuery(criteriaQuery);
return query.getResultList();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment