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.
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<Usuarios> 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<Usuarios> lista = session.createCriteria(Usuarios.class)
.add(Restrictions.lt("dataInicio", new Date()))
.add(Restrictions.gt("dataFim", new Date()))
.list();
Boa Romarcio… deu certo sim cara…
Obrigado…