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()));
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.