Buca por datas no Hibernate

1 resposta
adrianoms

é o seguinte quero fazer uma busca que me retorne os aniversariantes de um certo dia

o codigo abaixo até funciona só queria saber se existe uma maneira mais elegante de fazer isso
o campo dataNascimento é do tipo Date no Banco Firebird aqui.

public class AlunoDao{
    public List<Aluno> getPorNascimento(int dia, int mes) {
        String sDia = String.valueOf(dia);
        String sMes = String.valueOf(mes);
        
        if(sDia.length() == 1){
            sDia = "0" + sDia;
        }
        
        if(sMes.length() == 1){
            sMes = "0" + sMes;
        }
        
        return get("from Aluno where dataNascimento like '%" + sMes + "%" + sDia+ "%' order by Nome"); 
    }
    private List<Aluno> get(String sql) {
        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction t = session.beginTransaction();
        List lista = session.createQuery(sql).list();
        t.commit();
        return lista;
    }
}

1 Resposta

CintiaDR

Quando eu fui trabalhar só com alguns campos da data, eu usei recurso específico do Oracle:

http://www.techonthenet.com/oracle/functions/to_char.php

Não é o melhor jeito, admito, mas não encontrei outro na época. Mas isso faz uns ‘par de anos’. Tem recurso parecido em qq banco, mas o problema é que se vc fica preso àquele banco.

Pra escrever dia e mês com dois dígitos, também tem jeito melhor:



Ou então montar um date convencional e usar o DateFormat.

--------- EDIT -----------
Correção: acho que to_char é padrão do Hibernate faz tempo e eu nem sabia.
http://opensource.atlassian.com/projects/hibernate/browse/HHH-549

Criado 26 de maio de 2011
Ultima resposta 27 de mai. de 2011
Respostas 1
Participantes 2