Olá pessoal,
Seguinte, eu tenho que fazer uma consulta dos aniversariantes por período, mas acontece que não tenho como tratar a data para comparar só dia e mês. E quando vou fazer um between ele não retorna nada, pois a data de nascimento do cliente tem o ano diferente dos períodos passados. Não conheço o recurso pra fazer isso usando criteria, gostaria de saber se algum guru que conhece alguma maneira de fazê-lo, caso contrário, com eu faria isso usando JPQL? Segue o método que tenho.
public List<Cliente> listaAniversariantes(Date inicio, Date fim) {
CriteriaBuilder cb = this.em.getCriteriaBuilder();
CriteriaQuery<Cliente> cq = cb.createQuery(Cliente.class);
EntityType<Cliente> type = em.getMetamodel().entity(Cliente.class);
Root<Cliente> root = cq.from(Cliente.class);
Expression<Date> dataNascimento = root.get("dataNascimento");
cq.select(root)
.where(cb.between(dataNascimento, inicio , fim))
.orderBy(
cb.asc(root.get(type.getDeclaredSingularAttribute("id"))));
return em.createQuery(cq).getResultList();
}
Desde já o meu Obrigado.