public List<Produto> buscarPorParametrosComCriteria(String nome,
BigDecimal preco, LocalDate dataCadastro) {
CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<Produto> query = builder.createQuery(Produto.class);
Root<Produto> from = query.from(Produto.class);
Predicate filtros = builder.and();
if (nome != null && !nome.trim().isEmpty()) {
filtros = builder.and(filtros, builder.equal(from.get("nome"), nome));
}
if (preco != null) {
filtros = builder.and(filtros, builder.equal(from.get("preco"), preco));
}
if (dataCadastro != null) {
filtros = builder.and(filtros, builder.equal(from.get("dataCadastro"), dataCadastro));
}
if (sexo != null) {
filtros = builder.and(filtros, builder.equal(from.get("sexo"), sexo));
}else{
filtros = builder.and(filtros, builder.equal(from.get("sexo"), " "));
}
query.where(filtros);
return em.createQuery(query).getResultList();
}
Se o campo sexo vier vazio ou nulo, como seria a implementação da pesquisa?