Uma pequena observação, para quem foi testar um dos métodos e não funcionou. Tanto no vídeo da aula quanto no download do projeto, faltou acumular a variável jpql no ProdutoDao::buscarPorParametros
Está assim:
public List<Produto> buscarPorParametros(String nome,
BigDecimal preco, LocalDate dataCadastro) {
String jpql = "SELECT p FROM Produto p WHERE 1=1 ";
if (nome != null && !nome.trim().isEmpty()) {
jpql = " AND p.nome = :nome ";
}
if (preco != null) {
jpql = " AND p.preco = :preco ";
}
if (dataCadastro != null) {
jpql = " AND p.dataCadastro = :dataCadastro ";
}
....
}
Precisaria estar:
public List<Produto> buscarPorParametros(String nome,
BigDecimal preco, LocalDate dataCadastro) {
String jpql = "SELECT p FROM Produto p WHERE 1=1 ";
if (nome != null && !nome.trim().isEmpty()) {
jpql += " AND p.nome = :nome ";
}
if (preco != null) {
jpql += " AND p.preco = :preco ";
}
if (dataCadastro != null) {
jpql += " AND p.dataCadastro = :dataCadastro ";
}
...
}