私のエンティティにはこの属性があります...
@Convert(converter = LocalDateTimeAtributeConverter.class)
@Column(name="dthr_ult_atualizacao")
private LocalDateTime ultimaAtualizacao;
サーバーでは、列は JPA によって次のように作成されます。
dthr_ult_atualizacao (datetime2(7), null)
コードでは、この列に以下の値を保存します。
2016-05-09T15:20:00.357
データベースで Select direct を実行すると、値は正しいです。
2016-05-09 15:20:00.3570000
しかし、JPA でこの値を回復すると、値が間違っています。
2016-05-07T15:20:00.357
日が2日で間違っていることに注意してください。
したがって、データ型を手動で変更すると、すべて正常に動作します。なにが問題ですか?
私のコンバーター:
import java.time.LocalDateTime;
import javax.persistence.AttributeConverter;
import javax.persistence.Converter;
@Converter
public class LocalDateTimeAtributeConverter implements AttributeConverter<LocalDateTime, java.sql.Timestamp> {
@Override
public java.sql.Timestamp convertToDatabaseColumn(LocalDateTime entityValue)
{
if (entityValue != null) {
return java.sql.Timestamp.valueOf(entityValue);
}
return null;
}
@Override
public LocalDateTime convertToEntityAttribute(java.sql.Timestamp databaseValue) {
if (databaseValue != null) {
return databaseValue.toLocalDateTime();
}
return null;
}
}
私はwildfly 9でMicrosofr jdbc42を使用しています