StringBuilder hql = new StringBuilder();
hql.append(" FROM ").append(Declaracao.class.getSimpleName()).append(" dcl ");
hql.append(" WHERE 1 = 1 ");
if (filtro.getDataDeclaracao() != null) {
if (filtro.getDataDeclaracao().getDe() != null) {
hql.append(" AND dcl.dataCadastro >= :dataDeclaracaoDe ");
parametros.put("dataDeclaracaoDe", filtro.getDataDeclaracao().getDe());
}
if (filtro.getDataDeclaracao().getAte() != null) {
hql.append(" AND dcl.dataCadastro <= :dataDeclaracaoAte ");
parametros.put("dataDeclaracaoAte", filtro.getDataDeclaracao().getAte());
}
}
Gerando um SQL similar a este:
select * from DECLARACAO where DEC_DT_CADASTRO >= '07/01/2018' and DEC_DT_CADASTRO <= '07/01/2018'
Mesmo tendo uma declaração com a data de '07/01/2018', ele não retorna nenhum registro.
Mas se a consulta é gerada assim, retorna 1 registro.
select * from DECLARACAO where DEC_DT_CADASTRO >= '07/01/2018' and DEC_DT_CADASTRO <= '08/01/2018'
Banco de dados é Oracle. O que pode de ser ?