Pessoal, bom dia.
Estou desenvolvendo um sistema usando JSF, Hibernate e SQLSERVER 2008.
Tenho uma classe chamada Usuario mapeado para uma tabela de nome cadUsuario. Esta classe tem um atributo de nome dataCriacao que é do tipo Date conforme código abaixo.
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
@Entity
@Table(name="CadUsuario")
@NamedQueries({
@NamedQuery(name = "Usuario.CarregaPorCredenciais", query = "SELECT u FROM Usuario u WHERE u.login = :login AND u.senha = :senha"),
@NamedQuery(name = "Usuario.CarregaTodosUsuarios", query = "SELECT u FROM Usuario u"),
@NamedQuery(name = "Usuario.CarregaPorCodigo", query = "SELECT u FROM Usuario u WHERE u.codUsuario = :codUsuario")
})
public class Usuario {
//...
@Column(name="DataCriacao", nullable=false)
private Date dataCriacao;
//...
public Date getDataCriacao() {
return dataCriacao;
}
public void setDataCriacao(Date dataCriacao) {
this.dataCriacao = dataCriacao;
}
//...
}
Ao salvar uma data, por exemplo ‘09/11/2013 12:00:00’, tudo funciona bem. Confiro na tabela no SQLSERVER e a data que encontro é ‘09/11/2013 12:00:00’. Porém quando tento buscar esta data no banco, o hibernate me retorna ‘09/11/2013 14:00:00’, ou seja, 2 hrs de diferença. Acredito que seja algum problema de timezone, porém ainda não encontrei como resolver. Alguém teria alguma sugestão?
Desde já agradeço.