Não é que eu esteja querendo recuperar valores nulos, eu estou querendo realizar uma consulta dinâmica sem utilizar a Criteria API, na qual eu passe todos, nenhum ou somente algum parâmetro e o método me retorne o produto.
Por exemplo:
Produto produto = new Produto("Tênis", "Nike New", new BigDecimal("400"), categoria);
List<Produto> produtos = produtoDao.buscaPorListaDeParametros("Tênis",null,null);
produtos.forEach(produto -> System.out.println(produto));
Ele irá me retornar:
Produto(id=1, nome=Tênis, descricao=Nike New, preco=400.00, dataCadastro=2022-08-29, categoria=Categoria(id=1, nome=Sapatos))
No caso, se todos os argumentos passados no método sejam null, ele me retorna todos os dados do produto.
List<Produto> produtos = produtoDao.buscaPorListaDeParametros(null,null,null);
produtos.forEach(produto -> System.out.println(produto));
Retorno:
Produto(id=1, nome=Tênis, descricao=Nike New, preco=400.00, dataCadastro=2022-08-29, categoria=Categoria(id=1, nome=Sapatos))
Produto(id=2, nome=Sandália, descricao=DoPé New, preco=100.00, dataCadastro=2022-08-29, categoria=Categoria(id=1, nome=Sapatos))
Produto(id=3, nome=Chinelo, descricao=Havaianas New, preco=100.00, dataCadastro=2022-08-29, categoria=Categoria(id=1, nome=Sapatos))
Produto(id=4, nome=Tamanco, descricao=Zara New, preco=200.00, dataCadastro=2022-08-29, categoria=Categoria(id=1, nome=Sapatos))
Produto(id=5, nome=Society, descricao=Puma New, preco=300.00, dataCadastro=2022-08-29, categoria=Categoria(id=1, nome=Sapatos))
Acredito que tenha soluções melhores, com o uso de algum framework como o Spring Boot por exemplo.