Ajuda com Hibernate TimeStamp

Olá galera,

Tenho os seguintes atributos num objeto Cliente:

@Temporal(TemporalType.TIMESTAMP) private Date atendimento; @Temporal(TemporalType.TIMESTAMP) private Date faturamento; @Temporal(TemporalType.TIMESTAMP) private Date previsaoEntrega; @Temporal(TemporalType.TIMESTAMP) private Date entrega; Que deve ser do tipo TIMESTAMP mesmo porque preciso tanto da hora quanto da data tanto para exibição como para cálculo de períodos. Já tenho um relatório onde listo por ordem de atendimento todos os clientes do mês (fácil) e agora preciso de outro relatório que me liste por exemplo todos os clientes do mês que foram atendidos de manhã (8:00 as 12:00).
Já tenho algumas alternativas (gambiarras) em mente:

  • Listo todos os clientes do mês e faço um for na lista toda pra pegar apenas os de manhã (o que envolve uma conversão de data que pode ficar pesada numa lista grande);
  • Adiciono um outro atributo do tipo Date com o mesmo valor porém mapeado no banco como TemporalType.TIME ( o que aumentará o espaço no banco com uma coluna desnecessária se pensarmos em OO e em redundância de dados, além de ter que replicar o trabalho já que tenho mais de 25 atributos do mesmo tipo somando todas as entidades do meu projeto).
    Alguém tem alguma idéia boa para se fazer um hql ou criteria que filtre a busca apenas pelo horário do Date ignorando a data? Ou uma das gambiarras é realmente a melhor alternativa?
    Obrigado!

Fala leo!
Acho que o melhor seria usar Criteria.
Me sugeriram o livro “Beginning Hibernate” da Apress, está disponível para download em pdf no Google, são 359 páginas, 2.5mb só.
Lá vc vai encontrar td que vc precisar fazer em relação a pesquisa no banco, eu fiz aqui uma ferramenta de busca com vários parâmetros usando apenas Criteria.
Isso que vc precisa está explicado no livro com vários exemplos.
Abraço!