Problema com between em Criteria

0 respostas
deise.vicky

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?

Criado 4 de junho de 2011
Respostas 0
Participantes 1