Problema com Criteria

Pessoal, to tentando fazer uma busca no banco de dados queme retorne baseado em duas restricoes: a consulta tem que estar dentro do intervalo de datas selecionado e possuir o numero de serie passado. O codigo ficou algo semelhante com:

 CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
            CriteriaQuery<Contadores> criteriaQuery = criteriaBuilder.createQuery(Contadores.class);
            Root<Contadores> cont = criteriaQuery.from(Contadores.class);
            criteriaQuery.select(cont);
            Predicate predicate = criteriaBuilder.between(cont.<Date>get("dataDaColeta"), dataInicial, dataFinal);
            criteriaQuery.where(predicate);
            if (!"TODOS".equals(numeroDeSerie)) {

                Predicate predicate2 = criteriaBuilder.equal(cont.get("numeroDeSerie"), numeroDeSerie);
                criteriaQuery.where(predicate2);
            }


            criteriaQuery.distinct(true);
            criteriaQuery.orderBy(criteriaBuilder.desc(cont.<Date>get("dataDaColeta")));
            TypedQuery<Contadores> queryDigitada = entityManager.createQuery(criteriaQuery);

O que acontece é que quando mando pesquisar pela data e todos os registro, ele me retorna corretamente, mas quando mando filtrar por um numero de serie X alem da data , ele nao me retorna dentro da data correta, ou seja, ele obedece somente a regra do numero de serie.

Alguem pode me auxiliar com este problema?

Não duplique tópicos: