Spring Boot 1.4:LocalDateTime 映射到 varbinary 而不是时间戳类型

Spring Boot 1.4: LocalDateTime mapped to varbinary instead of timestamp type

我正在使用 Java 8Spring Boot 1.4hsqldb。 我有一个带有 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();
    }
}