Sysdate no Hibernate [RESOLVIDO]

2 respostas
francis.junio

galera, eu preciso fazer o seguinte.

select *
from BOM_DEPT_RES_INSTANCES_EMP_V                     
where SYSDATE between EFFECTIVE_START_DATE and EFFECTIVE_END_DATE;

os campos EFFECTIVE_START_DATE E EFFECCTIVE_END_DATE sao campos da tabela mesmo. o SYSDATE é a data e hora atual do servidor de banco de dados Oracle.
eu estou tentando fazer assim…

List<Criterion> listCriterios = new ArrayList<Criterion>();			
		String date = new SimpleDateFormat("dd/MM/yyyy").format(new Date());			
		Criterion c3 = Restrictions.between(date, "efectiveStartDate", "efectiveEndDate");
		listCriterios.add(c3);

dá o erro falando que date nao foi encontrado no objeto que esta sendo pesquisado.

a duvida é: Como faço para dar um SYSDATE no Oracle pelo hibernate.

2 Respostas

romarcio

Acredito que no between vc não vai conseguir testar 2 campos ao mesmo tempo pelo criteria.

Então o que vc quer é achar os registros que tem data inicio < que data do sistema e data fim > que data do sistema.

da pra fazer assim:

Nesse caso vai pegar os registros que são menor igual a data do sistema e maior igual a data do sistema.

Collection&lt;Usuarios&gt; lista = session.createCriteria(Usuarios.class)
                .add(Restrictions.le("dataInicio", new Date()))
                .add(Restrictions.ge("dataFim", new Date()))
                .list();

Nesse caso vai pegar os registros que são menores a data do sistema e maiores a data do sistema.

Collection&lt;Usuarios&gt; lista = session.createCriteria(Usuarios.class)
                .add(Restrictions.lt("dataInicio", new Date()))
                .add(Restrictions.gt("dataFim", new Date()))
                .list();
francis.junio

Boa Romarcio… deu certo sim cara…

Obrigado…

Criado 14 de julho de 2010
Ultima resposta 15 de jul. de 2010
Respostas 2
Participantes 2