Gostaria de saber se é possível realizar uma soma dentro do parametro da criteria
ex :
dataVencimento + 10 dias
Criteria criteria = session.createCriteria(Conta.class)
.add(Restrictions.gt("dataVencimento", new Date()))
;
NO caso: .add(Restrictions.gt("dataVencimento", new Date()))
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
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_MONTH, (cal.get(Calendar.DAY_OF_MONTH)+10));
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
;
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 ?
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;
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
Aprovitando a dica do digaoneves
você pode fazer assim:
//pega a data atual ou a data que está passando por parametro
Date date = new Date();
//usa o objeto Calendar para adicionar os dias desejados
Calendar cal = Calendar.getInstance();
//Aqui passa a data para o objeto calendar
cal.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 Calendar
Criteria criteria = session.createCriteria(Conta.class)
.add(Restrictions.gt("dataVencimento", cal.getTime()));
}
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?
[quote=romarcio]Aprovitando a dica do digaoneves
você pode fazer assim:
[code]
//pega a data atual ou a data que está passando por parametro
Date date = new Date();
//usa o objeto Calendar para adicionar os dias desejados
Calendar cal = Calendar.getInstance();
//Aqui passa a data para o objeto calendar
cal.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 Calendar
Criteria criteria = session.createCriteria(Conta.class)
.add(Restrictions.gt(“dataVencimento”, cal.getTime()));
}
[/code][/quote]
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.