[RESOLVIDO] Consulta Hibernate usando Criteria.between

3 respostas
F

Boa tarde povo !

Tenho que trazer uma consulta do banco usando criteria.between, só que essa campo data na é obrigatório entao existem dados nulos no banco.

O que tenho que fazer é quando fizer uma consulta por exemplo 01/11/2011 até 30/11/2011. tem q trazer os dados preenchidos e incluse os nulos alguem sabe como fazer??? eu só consigo trazer os preenchidos.

public List<Demanda> buscarDemanda(Demanda demanda,Date dtInicial,Date dtFinal) throws Exception {
		s = HibernateUtil.getInstance();
		createCriteria(demanda);

		if (demanda.getNumeroDemanda() != null
				&& !"".equals(demanda.getNumeroDemanda().trim())) {
			c.add(Restrictions.ilike("numeroDemanda",
					demanda.getNumeroDemanda(), MatchMode.ANYWHERE));
		}
	
		if (demanda.getStatus() != null
				&& !"".equals(demanda.getStatus().trim())) {
			c.add(Restrictions.ilike("status", demanda.getStatus(),
					MatchMode.EXACT));
		}

		if (dtInicial != null && dtFinal!=null) {
			
			c.add(Restrictions.between("dataHomologacao",
					dtInicial, dtFinal));
			
		}
		
		if (demanda.getIdDemanda() != null) {
			c.add(Restrictions.eq("idDemanda", demanda.getIdDemanda()));
		}

		return c.list();

	}

3 Respostas

I

Fala Filipeus,

já tentou isso?

c.add(Restrictions.isEmpty("dataHomologacao");

ou

c.add(Restrictions.isNull("dataHomologacao");

Abraço

F
Filipeus:
Boa tarde povo !

Tenho que trazer uma consulta do banco usando criteria.between, só que essa campo data na é obrigatório entao existem dados nulos no banco.

O que tenho que fazer é quando fizer uma consulta por exemplo 01/11/2011 até 30/11/2011. tem q trazer os dados preenchidos e incluse os nulos alguem sabe como fazer??? eu só consigo trazer os preenchidos.

public List<Demanda> buscarDemanda(Demanda demanda,Date dtInicial,Date dtFinal) throws Exception {
		s = HibernateUtil.getInstance();
		createCriteria(demanda);

		if (demanda.getNumeroDemanda() != null
				&& !"".equals(demanda.getNumeroDemanda().trim())) {
			c.add(Restrictions.ilike("numeroDemanda",
					demanda.getNumeroDemanda(), MatchMode.ANYWHERE));
		}
	
		if (demanda.getStatus() != null
				&& !"".equals(demanda.getStatus().trim())) {
			c.add(Restrictions.ilike("status", demanda.getStatus(),
					MatchMode.EXACT));
		}

		if (dtInicial != null && dtFinal!=null) {
			
			c.add(Restrictions.between("dataHomologacao",
					dtInicial, dtFinal));
			
		}
		
		if (demanda.getIdDemanda() != null) {
			c.add(Restrictions.eq("idDemanda", demanda.getIdDemanda()));
		}

		return c.list();

	}
if (dtInicial != null && dtFinal!=null) {
			
                   Criterion entreDatas = Restrictions.between("dataHomologacao", dtInicial, dtFinal);
                   Criterion nulldata      = Restrictions.isNull("dataHomologacao");
                   LogicalExpression orExp = Restrictions.or(entreDatas, nulldata);
		   c.add(orExp);
   
		}

nunca testei com datas, mas vale a tentativa.

F

Muito obrigado filipechaves !!! Funcionou perfeitamente !!!

vlw!!!

Criado 16 de novembro de 2011
Ultima resposta 16 de nov. de 2011
Respostas 3
Participantes 3