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?