1
resposta

No exercicio "Consultas com parâmetros dinâmicos", por que não colocar a setParameter nos primeiros IF?

No exercício "Consultas com parâmetros dinâmicos", por que não colocar a setParameter nos primeiros IF? ex.:

String jpql = "SELECT c FROM Cliente c WHERE ";
 TypedQuery<Cliente> query = em.createQuery(jpql, Cliente.class);
    if (nome != null && !nome.trim().isEmpty()) {
        jpql += "AND c.nome = :nome ";
     query.setParameter("nome", nome);
    }
    if (dataNascimento != null) {
        jpql += " AND c.dataNascimento = :dataNascimento ";
    query.setParameter("dataNascimento", dataNascimento);
    }


    return query.getResultList();
    }
1 resposta

Oi Odsley,

Desse jeito vai dar problema, pois você está criando o objeto Query com o JPQL incompleto(contendo apenas a parte do SELECT c FROM Cliente c WHERE).

Dentro dos ifs você altera a String do JPQL, mas o objeto query já foi criado anteriormente com o jpql incompleto.