我的实体有这个属性......
@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
当我在数据库中直接选择时,值是正确的:
2016-05-09 15:20:00.3570000
但是当我通过 JPA 恢复这个值时,这个值是错误的:
2016-05-07T15:20:00.357
请注意,两天后的日期是错误的。
所以,如果我手动更改数据类型,一切正常。怎么了?
我的转换器:
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 的微软 jdbc42