[RESOLVIDO] Usar o SimpleDateFormat em consulta JPA

Oi pessoal, esbarrei com uma questão aqui que num sei pra onde correr!

Seguinte tenho isso:

 @Column(name = "dat_feriado", nullable = true)
 @Temporal(javax.persistence.TemporalType.TIMESTAMP)
    private Date datFeriado;

Na entidade Feriado.

Como é TIMESTAMP a data é salva assim ex:
22/11/2009 00:00:00
Só que eu gostaria de fazer uma consulta com JPA onde eu comparo somente a data 22/11/2009 com uma que eu passo para verificação, ignorando a HH:mm:ss

Já estou fazendo isto:

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/MM/yyyy");
Query query = entitymanager.createNamedQuery(
                            "SELECT " +
                            "f.tipFeriado " +
                            "FROM " +
                            "Feriado f " +
                            "WHERE " +
                            "f.datFeriado = :PDat_Dia");
                    query.setParameter("PDat_Dia", simpleDateFormat.format(PDat_Dia));

faltaria fazer um SimpleDateFormat no f.datFeriado só que nao sei fazer isso na consulta.
Alguem teria uma dica?

Obrigado desde já!!!

Mais o campo tinha que ser TIMESTAMP? pq não poderia ser somente DATE?

Porque o horario é o que usarei na aplicação. Preciso trazer todos desta data comparada!!!

Os horario serão usados na aplicação para comparações!!!

Deu pra entender?

Cara, bom não tenho muito conhecimento sobre isso, ou se tem um jeito mais facil…
Mas se você ainda não achou nenhuma solução, talvez se você transformar a data em timestamp, cria inicio e fim do dia e mandar comparar…

[code] Calendar c = Calendar.getInstance();
c.setTime(datFeriado);
c.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH), 0, 0, 0);

	Date inicioDia = c.getTime();
	
	c.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH), 23, 59, 59);
	Date fimDia = c.getTime();

[/code]

Query query = entitymanager.createQuery( "SELECT f.tipFeriado FROM Feriado f WHERE f.datFeriado >= :inicioDia AND f.datFeriado <= :fimDia"); query.setParameter("inicioDia", inicioDia); query.setParameter("fimDia", fimDia);

Ai você tenta comparar a data do banco com ela.
Desculpe se eu falei besteira, mais tenta ai…
Se der certo você avisa ai…
Abraçoo

Da forma que disse num vai me resolver!!!

Preciso alinha o que vem do bd!!! O que voce fez ai num trata o dado que é pego na consulta!

Qual banco você está utilizando ?? É o oracle ?

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/MM/yyyy"); Query query = entitymanager.createNamedQuery( "SELECT " + "f.tipFeriado " + "FROM " + "Feriado f " + "WHERE " + "to_date(f.datFeriado) = to_date(:PDat_Dia, 'dd/MM/yyyy')"); query.setParameter("PDat_Dia", simpleDateFormat.format(PDat_Dia));

Bom… não lembro direito… Mas o to_date transforma tanto string quando timestamp em date… ele trunca a data e retira as horas

O banco em questão é Oracle 9i.

Vou testar aqui este to_date

[quote=jonatha.chaves]O banco em questão é Oracle 9i.

Vou testar aqui este to_date[/quote]

Só não esqueça de colocar tanto para os dados da produção quanto para o parametro… e observe que eu forcei a mascara da data porque dependendo do idioma do computador, os meses e os dias invertem… como ingles por exemplo

Também iria sugerir a você utilizar o to_date …

isso usa o to_date que resolve.

Valeu pessoal, deu certinho o to_date(), deu até para inventar umas coisas!!!