Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

So me retorna ate Where = 1+1

Mesmo eu adicionando os filtros ele ainda não me retorna o banco de dados MySQL já esta populado.

` public List 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));
    }
    query.where(filtros);

    return em.createQuery(query).getResultList();
} ```

e aqui ta o main

```     public static void main(String[] args) {

    EntityManager em = JPAUtil.getEntityManager();
    ProdutoDAO produtoDAO = new ProdutoDAO(em);

    produtoDAO.buscarPorParametrosComCriteria("PS5", null, null);
} ```

Hibernate: 
select
    produto0_.id as id1_4_,
    produto0_.categoria_id as categori6_4_,
    produto0_.dataCadastro as datacada2_4_,
    produto0_.descricao as descrica3_4_,
    produto0_.nome as nome4_4_,
    produto0_.preco as preco5_4_ 
from
    produtos produto0_ 
where
    1=1
2 respostas
solução!

Oi Bruno,

Nesse seu primeiro if tem um errinho:

if (nome != null && nome.trim().isEmpty()) {

Na segunda condição faltou o ! para negar:

if (nome != null && !nome.trim().isEmpty()) {

realmente passou despercebido, obrigado rodigo