Spring Boot 1.4:LocalDateTime 映射到 varbinary 而不是时间戳类型
Spring Boot 1.4: LocalDateTime mapped to varbinary instead of timestamp type
我正在使用 Java 8
、Spring Boot 1.4
和 hsqldb
。
我有一个带有 java.time.LocalDateTime
字段的实体。
当我检查休眠生成的 sql 时,它使用 varbinary
作为数据类型。
如何让它使用 timestamp
数据类型?
更新:
当我添加 hibernate-java8 (5.1.0.Final)
依赖项时它确实有效。
但它不适用于 hibernate-java8 (5.2.x versions)
。这可能是因为 Java 8
支持已添加到 hibernate-core 5.2
本身。
添加hibernate-java8 (5.1.0.Final)
依赖后有效。
它不适用于 hibernate-java8 (5.2.x versions)
。
这是因为 Java 8 支持是 to hibernate-core 5.2
本身添加的。
另一种方法是使用转换器注释您的实体localDateTime_field。
@Convert(converter = LocalDateTimeConverter.class)
private LocalDateTime localDateTime_field;
事情是这样的:
import javax.persistence.AttributeConverter;
import javax.persistence.Converter;
import java.sql.Timestamp;
import java.time.LocalDateTime;
@Converter
public class LocalDateTimeConverter implements AttributeConverter<LocalDateTime, Timestamp> {
@Override
public Timestamp convertToDatabaseColumn(LocalDateTime localDateTime) {
return localDateTime == null ? null : Timestamp.valueOf(localDateTime);
}
@Override
public LocalDateTime convertToEntityAttribute(Timestamp timestamp) {
return timestamp == null ? null : timestamp.toLocalDateTime();
}
}
我正在使用 Java 8
、Spring Boot 1.4
和 hsqldb
。
我有一个带有 java.time.LocalDateTime
字段的实体。
当我检查休眠生成的 sql 时,它使用 varbinary
作为数据类型。
如何让它使用 timestamp
数据类型?
更新:
当我添加 hibernate-java8 (5.1.0.Final)
依赖项时它确实有效。
但它不适用于 hibernate-java8 (5.2.x versions)
。这可能是因为 Java 8
支持已添加到 hibernate-core 5.2
本身。
添加hibernate-java8 (5.1.0.Final)
依赖后有效。
它不适用于 hibernate-java8 (5.2.x versions)
。
这是因为 Java 8 支持是 to hibernate-core 5.2
本身添加的。
另一种方法是使用转换器注释您的实体localDateTime_field。
@Convert(converter = LocalDateTimeConverter.class)
private LocalDateTime localDateTime_field;
事情是这样的:
import javax.persistence.AttributeConverter;
import javax.persistence.Converter;
import java.sql.Timestamp;
import java.time.LocalDateTime;
@Converter
public class LocalDateTimeConverter implements AttributeConverter<LocalDateTime, Timestamp> {
@Override
public Timestamp convertToDatabaseColumn(LocalDateTime localDateTime) {
return localDateTime == null ? null : Timestamp.valueOf(localDateTime);
}
@Override
public LocalDateTime convertToEntityAttribute(Timestamp timestamp) {
return timestamp == null ? null : timestamp.toLocalDateTime();
}
}