NO caso: .add(Restrictions.gt("dataVencimento", new Date()))
ddark.emanu
hum, na realidade eu preciso fazer a seguinte consulta : data de Vencimento(Atributo do objeto) + x dias(paramentro) tem que ser maior que hoje … tem outra maneira de fazer isso com criteria ?
dataVencimento + x > hoje
Rodrigo_Sasaki
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_MONTH, (cal.get(Calendar.DAY_OF_MONTH)+10));
ddark.emanu
O calculo eu sei fazer , só que para realizar o calculo eu preciso de um atributo do objeto que esta dentro da criteria e realizar esse calculo dentro da criteria
Criteria criteria = session.createCriteria(Conta.class)
.add(Restrictions.gt("dataVencimento", new Date())) // conta.dataVencimento
;
Rodrigo_Sasaki
Ah, entendi… você quer fazer o cálculo com a data de vencimento… não com a data de hoje.
Você tem esse valor guardado em algum objeto ?
ddark.emanu
exato … a data de vencimento está dentro de um objeto que estou recuperando por uma consulta, então eu tenho uma list de objetos, por isso quero fazer dentro da criteria que já traz os registros filtrados
Quero retornar do banco de dados as contas que a data de vencimento + x dias tem que ser maior que a data de hoje
ex :
Select * from conta where dataVencimento + 10 > sysdate;
Rodrigo_Sasaki
Não sei como fazer via Criteria, cara… não sei nem se é possível hehe
não imagino como fazer algo assim sem manipular a data antes
romarcio
Aprovitando a dica do digaoneves
você pode fazer assim:
//pega a data atual ou a data que está passando por parametroDatedate=newDate();//usa o objeto Calendar para adicionar os dias desejadosCalendarcal=Calendar.getInstance();//Aqui passa a data para o objeto calendarcal.setTime(date);//Aqui soma a data com mais 10 dias.cal.set(Calendar.DAY_OF_MONTH,(cal.get(Calendar.DAY_OF_MONTH)+10));//recupera a data atual + 10 dias do objeto CalendarCriteriacriteria=session.createCriteria(Conta.class).add(Restrictions.gt("dataVencimento",cal.getTime()));}
robertouba
Estou com dúvida parecida, porém quero que pegar parta da data, ou seja,
SELECT * FROM tabela WHERE MONTH(data) = 2
Como faria em criteria?
Arthur_F_Ferreira
romarcio:
Aprovitando a dica do digaoneves
você pode fazer assim:
//pega a data atual ou a data que está passando por parametroDatedate=newDate();//usa o objeto Calendar para adicionar os dias desejadosCalendarcal=Calendar.getInstance();//Aqui passa a data para o objeto calendarcal.setTime(date);//Aqui soma a data com mais 10 dias.cal.set(Calendar.DAY_OF_MONTH,(cal.get(Calendar.DAY_OF_MONTH)+10));//recupera a data atual + 10 dias do objeto CalendarCriteriacriteria=session.createCriteria(Conta.class).add(Restrictions.gt("dataVencimento",cal.getTime()));}
O problema é que, com esse código, você está somando 10 dias na data atual. O que o cara quer são 10 dias na data do banco maior do que a data atual. Eu acho a mesma coisa que o Sasaki. Fazer essa operação usando Criteria é complexo e eu particularmente não sei como faria. Precisaria pesquisar.