//ProdutoDAO
public List<Produto> findComData(String dataLancamento) throws ParseException {
CriteriaBuilder builder = manager.getCriteriaBuilder();
CriteriaQuery<Produto> criteriaQuery = builder.createQuery(Produto.class);
Root<Produto> root = criteriaQuery.from(Produto.class);
List<Predicate> predicates = new ArrayList<>();
if(dataLancamento != null) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date date = format.parse(dataLancamento);
Calendar cal = Calendar.getInstance();
cal.setTime(date);
Predicate predicate = builder.equal(builder.function("date", String.class, root.get("dataLancamento")), dataLancamento);
predicates.add(predicate);
criteriaQuery.where((Predicate[]) predicates.toArray(new Predicate[0]));
TypedQuery<Produto> typedQuery = manager.createQuery(criteriaQuery);
return typedQuery.getResultList();
} else {
return manager.createQuery("select p from Produto p", Produto.class).getResultList();
}
}
//RelatorioProdutosController
@Controller
@RequestMapping("/relatorio-produtos")
public class RelatorioProdutosController {
@Autowired
ProdutoDAO produtoDao;
@RequestMapping(method = RequestMethod.GET, produces = "application/json")
@ResponseBody
public List<Produto> relatorioJson(@RequestParam(value= "dataLancamento", required = false) String dataLancamento) throws ParseException {
return produtoDao.findComData(dataLancamento);
}
}
No caso cadastrei 2 livros e mesmo inserindo a data como parametro, me retorna os 2:
[{"id":1,"titulo":"Programando com Java ","descricao":"Adicionando 1º livro ","paginas":100,"dataLancamento":1597892400000,"sumarioPath":"arquivos-sumario/astm.jpg","precos":[{"valor":100.00,"tipo":"EBOOK"},{"valor":200.00,"tipo":"IMPRESSO"},{"valor":300.00,"tipo":"COMBO"}]},{"id":2,"titulo":"Programando com Java 2","descricao":"Adicinando mais um...","paginas":100,"dataLancamento":627271200000,"sumarioPath":"arquivos-sumario/banner.jpg","precos":[{"valor":50.00,"tipo":"EBOOK"},{"valor":60.00,"tipo":"IMPRESSO"},{"valor":70.00,"tipo":"COMBO"}]}]
Alguém poderia me ajudar?