Olá pessoal! Estou com um problema de datas no Hibernate 3.1. Estou usando como banco de dados o SQL Server 2000, o formato de data no SQL Server está assim (descrevendo no padrão java):“yyyy-dd-MM HH:mm:ss”, estou usando o seguinte comando para setar a data no código java:
private Date getDate() {
Locale locale = Locale.US;
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-dd-MM HH:mm:ss",locale);
Calendar calendar = formatter.getCalendar();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
return calendar.getTime();
}
Mas quando observo no debug a data vai no formato:“yyyy-MM-dd HH:mm:ss”. Estou usando Hibernate 3.1 e não sei se deveria me preocupar com a formatação da data ou o Hibernate é quem deveria resolver isso, alguém pode me dar alguma idéia?
Desde já agradeço.
Bom dia irmao…
Olha… o seu Objeto e do tipo java.util.Date? a formatacao vc tem q se preocupar depois que recuperar do BD.
Boa tarde Cassolato! O negócio é o seguinte: este método que coloquei no post anterior retorna a data que vai ser colocada no objeto a ser persistido. No documento de mapping estava com “date” somente depois mudei para “java.util.Date” e até que mandava mais ou menos do jeito que eu queria (como eu disse a data estava indo como “yyyy-MM-dd HH:mm:ss”) mas no banco o dia é trocado com o mês.
Depois mudei de novo no mapping para timestamp mas continuou da mesma forma, então fico na dúvida se eu tenho que dar um jeito de formatar a data antes do envio para o hibernate poder gravar ou era o Hibernate quem deveria se preocupar com isso.
Vamos supor que tu mapeie um OBjeto como java.util.Date no hibernate, na hora de ele fazer a persistencia ele vai tranforma-lo em um java.sql.Date, e persistir, quando tu recuperar ele vai recuperar a dada em um java.util.Date, ai tu vai ter q usar um SimpleDateFormater ou alguma coisa assim pra arrumar ele pra mostrar pra o usuário, entend ?
Bom então pelo que você disse eu não tenho que fazer toda esta formatação antes de enviar para o banco de dados. Quando é tentado gravar uma data no banco de dados no formato errado o Hibernate não deveria disparar uma excessão?
Só uma coisa a considerar…
A sua aplicação está usando o mesmo Locale do Banco de dados?
se a sua aplicação estiver em pt_br e o seu banco estiver em en_us da problema =)
abraços!