Pessoal, estou tentando fazer um select usando o Criteria mas não está dando muito certo.
Preciso fazer um between entre datas.
Meu código está desta forma:
List<Conhecimento> conhecimentos = new ArrayList<Conhecimento>();
CriteriaBuilder criteria = _em.getCriteriaBuilder();
CriteriaQuery<Conhecimento> query = criteria.createQuery(Conhecimento.class);
Root<Conhecimento> root = query.from(Conhecimento.class);
query.select(root);
if (dataInicio != null && dataFim != null) {
Predicate predicate = criteria.between(root.<Date>get("dataEmissao"), dataInicio, dataFim);
query.where(predicate);
}
conhecimentos = _em.createQuery(query).getResultList();
O que eu preciso fazer é o seguinte, caso sejam passadas as datas de Início e Fim, fazer um select que traga os conhecimentos neste intervalo de datas, senão devo trazer todos.
O problema é que esse between não está trazendo nada quando as datas não estão nulas e eu tenho vários registros no banco, deveria trazer. Quando as datas estão nulas ele traz todos os registros sem problemas!!!
O que eu estou fazendo de errado aí? Tem alguma forma de fazer select com between?