Hibernate - Criteria com DateTime igonorando Horas

1 resposta
turim

Tenho uma coluna DATETIME no banco de dados, mas preciso fazer uma consulta retornando todos registros de uma certa data, precisaria que o hibernate ignorasse as horas nesse caso.

Como fazer isso com Criteria ?

criteria.add(Restrictions.eq("dtRegistro" new Date()));

Valeu

1 Resposta

drsmachado

Aí você precisa entender de SQL…
Veja bem, quando eu utilizo o método eq(String, Object) eu estou dizendo ao Hibernate que quero que ele faça algo como

coluna = valor

E, sabemos que new Date corresponde à obter a data e hora atual, incluindo os segundos e milissegundos.
Isso implica que, a não ser que você tenha salvo a mesma data e hora e segundos e milissegundos, nunca vai rolar.
O ideal seria utilizar o between (Restrictions.between(String, Date, Date) ou Restrictions.between(String, Calendar, Calendar)). Que permitiria ao Hibernate transformar a query em algo como

coluna BETWEEN data_ini AND data_fim

Onde data_ini e data_fim indiquem o intervalo entre a meia noite da data em questão e data_fim seja 00:00 da data seguinte.
Como fazer isso?
Bom, você precisará ser um pouco inventivo.
Se pesquisar por aí, vai achar muita coisa boa.

Criado 25 de abril de 2013
Ultima resposta 25 de abr. de 2013
Respostas 1
Participantes 2