Comparar datas com HQL

3 respostas
Basilio

Galera estou tentando comparar se uma data no banco esta entre duas datas passadas como parametro. Meu banco foi mapeado com hibernate, e a data do banco esta vindo como java.util.date no formato “yyyy-MM-dd hh:mm:ss”. Tentei passar objetos tb java.util.date, mas nao esta dando certo pq na hql eles estao sendo compardos como tipo: Sat Jan 01 09:09:25 BRST 2011. Alguem pode me ajudar?

VLW

3 Respostas

leo.junior

Basilio, já tentou fazer a mesma coisa sem usar HQL? Facilita bastante. Veja o exemplo:

public Collection<SuaClasseEntidade> consulta(Date dataMinima, Date dataMaxima) {
   SessionFactory sessionFactory;
   Session sessao = sessionFactory.openSession();
   Criteria crit = sessao.createCriteria(SuaClasseEntidade.class);
   crit.add(Restrictions.between("atributoData", dataMinima, dataMaxima));

   return crit.list();
}

Isso te retornará uma lista com o resultado da consulta. Depois basta iterar e fazer o que vc quer!

Abs!

Basilio

Eu quero fazer exatamente o q vc fez, so q em vez de usar criteria eu queria por HQL, so que estou tendo esse problema pq o HQL tenta comparar uma data da forma “yyyy-MM-dd hh:mm:ss” (é assim que esta no banco), com uma tipo Sat Jan 01 09:09:25 BRST 2011, que é a que eu estou passando. Ja tentei usar o dateformat mas nao deu certo.

B

Procure pelo to_date … (caso estiver trabalhando com Oracle)

Criado 20 de abril de 2010
Ultima resposta 21 de abr. de 2010
Respostas 3
Participantes 3