LocalDateTime , ZonedDateTime 和 Timestamp
我有一个SpringBoot应用程序,使用Spring Initializer,嵌入式Tomcat,Thymeleaf模板引擎,并打包为可执行JAR文件。
我有一个具有2个属性的域对象(initDate,endDate)。我想创建2个转换器来处理mySQL DB
@Convert(converter = LocalDateTimeAttributeConverter.class)
private LocalDateTime initDate;
@Convert(converter = ZonedDateTimeAttributeConverter.class)
private ZonedDateTime endDate;
转换器 1(正常)
@Converter
public class LocalDateTimeAttributeConverter implements AttributeConverter<LocalDateTime, Timestamp> {
@Override
public Timestamp convertToDatabaseColumn(LocalDateTime localDateTime) {
return (localDateTime == null ? null : Timestamp.valueOf(localDateTime));
}
@Override
public LocalDateTime convertToEntityAttribute(Timestamp sqlTimestamp) {
return (sqlTimestamp == null ? null : sqlTimestamp.toLocalDateTime());
}
}
这是我想创建的那个
@Converter
public class ZonedDateTimeAttributeConverter implements AttributeConverter<ZonedDateTime, Timestamp> {
@Override
public Timestamp convertToDatabaseColumn(ZonedDateTime zoneDateTime) {
return (zoneDateTime == null ? null : Timestamp.valueOf(zoneDateTime));
}
@Override
public ZonedDateTime convertToEntityAttribute(Timestamp sqlTimestamp) {
return (sqlTimestamp == null ? null : sqlTimestamp.toZonedDateTime());
}
}
但我不能,因为我有2个错误:
The method valueOf(String) in the type Timestamp is not applicable for the arguments (ZonedDateTime)
并且时间戳没有该方法toZonedDateTime()
如果我没有为ZonedDate添加任何转换器,JPA会创建一个表,其类型为varbinary(255)