Prezados,
Estou tentando fazer uma consulta com criteria e estou esbarrando num pequeno problema. Seguinte, tenho o seguinte atributo na classe.
@JoinColumn(name = "ID_ORDEM_FISCALIZACAO", referencedColumnName = "ID_ORDEM_FISCALIZACAO")
@ManyToOne(optional = false)
private OrdemFiscalizacao ordemFiscalizacao;
Só que na consulta eu desejo trazer também os registros onde a “ordemFiscalizacao” for nula, pois apesar der uma FK este campo pode ser null no BD.
Porem o Hibernate não traz estes registros. Segue o código da minha consulta:
public List<AcaoFiscalizatoria> listar(PesquisaAcaoFiscalizatoria pesquisa) {
Criteria criteria = this.session.createCriteria(AcaoFiscalizatoria.class);
Criteria subCriteriaOrdemFiscalizacao = criteria.createCriteria ("ordemFiscalizacao");
if (pesquisa.getOrdemFiscalizacaoSelecionada() != null) {
subCriteriaOrdemFiscalizacao.add(Restrictions.eq("numero", pesquisa.getOrdemFiscalizacaoSelecionada().getNumero()));
}
if (pesquisa.getDataInicioOrdemFiscalizacao() != null) {
subCriteriaOrdemFiscalizacao.add(Restrictions.eq("dataInicio", pesquisa.getDataInicioOrdemFiscalizacao()));
}
if (pesquisa.getOperacaoSelecionada() != null) {
criteria.add(Restrictions.eq("operacao", pesquisa.getOperacaoSelecionada()));
}
if (pesquisa.getUnidadeIbamaSelecionada() != null) {
criteria.add(Restrictions.eq("unidadeIbama", pesquisa.getUnidadeIbamaSelecionada()));
}
if (pesquisa.getMunicipioSelecionado() != null) {
criteria.add(Restrictions.eq("municipio", pesquisa.getMunicipioSelecionado()));
}
if (pesquisa.getFiscalSelecionado() != null) {
Criteria subCriteriaEnvolvido = criteria.createCriteria("envolvidoList");
subCriteriaEnvolvido.add(Restrictions.eq("fiscal", pesquisa.getFiscalSelecionado()));
}
if (pesquisa.getDataInicial() != null && pesquisa.getDataFinal() != null) {
Calendar dataInicial = Calendar.getInstance();
dataInicial.setTime(pesquisa.getDataInicial());
dataInicial.set(Calendar.HOUR, 0);
dataInicial.set(Calendar.MINUTE, 0);
dataInicial.set(Calendar.SECOND, 0);
Date dataInicialFormatada = dataInicial.getTime();
Calendar dataFinal = Calendar.getInstance();
dataFinal.setTime(pesquisa.getDataFinal());
dataFinal.set(Calendar.HOUR, 23);
dataFinal.set(Calendar.MINUTE, 59);
dataFinal.set(Calendar.SECOND, 59);
Date dataFinalFormatada = dataFinal.getTime();
criteria.add(Restrictions.between("data", dataInicialFormatada, dataFinalFormatada));
}
if (pesquisa.getSituacaoSelecionada() != null) {
criteria.add(Restrictions.eq("situacao", pesquisa.getSituacaoSelecionada().getCodigo()));
}
criteria.addOrder(Order.asc("data"));
criteria.addOrder(Order.asc("numero"));
return criteria.list();
}