JPA/HIbernate ...duvida comparar campo data usando criteria

6 respostas
P

duvida como faço pra ler essa data no banco

pois na tela jsp temho uma tela de criteiro de consulta

e tem um campo que pede data de nascimento e é informado

22/01/1979 (tela jsp)

e quando faço o comando abaixo não acha o registro será que é porque
tem hora/minuto/segundo …

Como poderia fazer ???

.add( Restrictions.eq(detailArray[0].getCampo(), detailArray[0].getValor()) )
-- no banco mysql 
data nascimento 
1979-01-22 15:35:57

6 Respostas

ignacio83

Como vc está mapeando este atributo?

P

está assim no objeto

@Column
private GregorianCalendar birthDate;
otavio

Se no teu banco de dados o campo for datetime a consulta leva em conta horas e minutos.

O que faço é um beetwhen assim:

Calendar baseDate = Calendar.getInstance();

//data minima

baseDate.set(Calendar.HOUR, 0);

baseDate.set(Calendar.MINUTES, 0);

baseDate.set(Calendar.SECONDS, 0);

Date lo = baseDate.getTime();
//data máxima

baseDate.set(Calendar.HOUR, 23);

baseDate.set(Calendar.MINUTES, 59);

baseDate.set(Calendar.SECONDS, 59);

Date hi = baseDate.getTime();

.add(Restrictions.beetwhen(“birhday”, lo, hi) ;

Outra coisa… Não use GregorianCalendar. Use Calendar, ou melhor ainda, use apenas Date.

Calendar é bom de usar apenas para calculos e afins, pois é bem mais pesado que o simples Date.

T

Ou vc usa a anotação @Temporal(TemporalType.DATE), se não me engano…

otavio

Bem lembrado… Aliás, @Temporal não é obrigatório para campos de data/tempo?

T

hum… falando em termos da especificação eu não lembro hehehe preciso pesquisar…

Criado 26 de janeiro de 2009
Ultima resposta 26 de jan. de 2009
Respostas 6
Participantes 4