Boa noite pessoal,
Estou um um probleminha chato, creio que seja algo relacionado a alguma configuração do hibernate.
Estou tentando salvar uma data, mas quando salvo o registro a data e horário que ficam salvo esta errado.
@Temporal(TemporalType.TIMESTAMP) @Column(name=“dt_cadastro”, length=10)
public Date getDtCadastro() {
return dtCadastro;
}
usuario.setDtCadastro(new Date());
Estou usando o mysql, no meu banco o campo esta como TIMESTAMP, quando imprimo pelo netbeans, ele exibe a data correta, mas quando vai pro banco vai a data errada. Aguem sabe o que posso estar fazendo errado?
Há um tempo atrás tive um problema em que a data era salva com 3 horas de diferença da atual. Resolvi colocando o serverTimezone = America/Sao_Paulo, conforma abaixo. Se for esse seu caso pode fazer teste na sua string de conexão dessa forma:
Recomendo não utilizar Timezone=America/Sao_Paulo,
Com a nova regra do horário de verão, se seu java não estiver atualizado para a última versão ele vai dar problema.
Você pode testar a opção acima, caso ocorra algum problema, tente colocar UTC -3.
funcionou, porém acredito que esse horário seja de São Paulo, eu moro em Manaus, daí aconteceu de o horário ficar 2 horas a mais. Teria algum serverTimeZone para cá?
porém quando testei assim deu erro, estava pesquisando sobre esse UTC e parece que aqui pra minha cidade é o UTC -4, conforme o site(https://www.timeanddate.com/time/zone/brazil) porem tentei também e não consegui.
Talvez seja algum detalhe, alguem saberia como ajustar?
Existe um TimeZone chamado America/Manaus que você poderia substituir. Fiz um teste rápido aqui e aparentemente a data inserida ficou com a hora de Manaus.
Sobre a informação do rodrigo. Se colocar UTC ele continua com o mesmo problema. Tentei colocar UTC-3 mais ele não reconhece como um timezone valido e apresenta o seguinte erro:
Exception in thread "main" java.sql.SQLException: No timezone mapping entry for 'UTC-3'
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:73)
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:85)
at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:835)
at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:455)
at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:240)
at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:199)
at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:677)
at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:228)
Seria bom se tivesse a opção de utilizar o formato UTC-3, mas não encontrei a forma de ele funcionar. Se o @Rodrigomarden tiver essa informação, também gostaria de saber.