Bom dia pessoal, eu tenho uma consulta e nessa consulta eu uso um between o que ocorre é o seguinte. Quando pesquiso usando a data inicial e a data final a pesquisa não me retorna os documentos do dia escolhido da data final.
Exemplo: coloquei na data final 03/05/2013 a consulta não retorna os documentos desta data retornando somente até 02/05/2013.
Alguém pode me dar uma ajuda a resolver isso?
Desde já agradeço.
StringBuffer jpql = new StringBuffer();
jpql.append("Select doc from DocumentoArrec as doc");
jpql.append(" inner join doc.contribuinteDocumento as contrib");
jpql.append(" Where");
jpql.append("(" );
jpql.append("((contrib.numrInscricaoEmitente = :inscricao");
jpql.append(" or contrib.numrCnpjEmitente = :cnpj");
jpql.append(" or contrib.numrCpfEmitente = :cpf");
jpql.append(" or contrib.numrPlacaVeiculo = :placa)");
if (numrDocumentoOrigem != null && idTipoDocumentoPrecedente != null) {
jpql.append(" and ");
jpql.append("(doc.numrDocumentoOrigem = :numero and doc.tipoDocumentoPrecedente.idTipoDocPrecedente = :idTipoDoc)");
}
if (dataEmissaoInicial != null && dataEmissaoFinal != null){
jpql.append(" and (doc.dataEmissao between :dataInicial AND :dataFinal)" );
}
jpql.append("))");
jpql.append(" Order by doc.dataEmissao");
Query query = getEntityManager().createQuery(jpql.toString());
query.setParameter("inscricao", numrInscricaoEmitente);
query.setParameter("cnpj", numrCnpjEmitente);
query.setParameter("cpf", numrCpfEmitente);
query.setParameter("placa", numrPlacaVeiculo);
if (numrDocumentoOrigem != null && idTipoDocumentoPrecedente != null) {
query.setParameter("numero", numrDocumentoOrigem);
query.setParameter("idTipoDoc", idTipoDocumentoPrecedente);
}
if (dataEmissaoInicial != null && dataEmissaoFinal != null){
query.setParameter("dataInicial", dataEmissaoInicial, TemporalType.TIMESTAMP);
query.setParameter("dataFinal", dataEmissaoFinal, TemporalType.TIMESTAMP);
}
List<DocumentoArrec> lista = query.getResultList();
return lista;
}