Spring Boot 1.4:LocalDateTime 映射到 varbinary 而不是时间戳类型
Posted
技术标签:
【中文标题】Spring Boot 1.4:LocalDateTime 映射到 varbinary 而不是时间戳类型【英文标题】:Spring Boot 1.4: LocalDateTime mapped to varbinary instead of timestamp type 【发布时间】:2017-01-01 07:24:03 【问题描述】:我正在使用Java 8
、Spring Boot 1.4
和hsqldb
。
我有一个带有java.time.LocalDateTime
字段的实体。
当我检查hibernate生成的sql时,它使用varbinary
作为数据类型。
如何让它使用timestamp
数据类型?
更新:
当我添加 hibernate-java8 (5.1.0.Final)
依赖项时,它确实有效。
但它不适用于hibernate-java8 (5.2.x versions)
。这可能是因为 Java 8
支持已添加到 hibernate-core 5.2
本身。
【问题讨论】:
【参考方案1】:在添加 hibernate-java8 (5.1.0.Final)
依赖项时有效。
它不适用于hibernate-java8 (5.2.x versions)
。
这是因为 to hibernate-core 5.2
本身添加了 Java 8 支持。
【讨论】:
【参考方案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();
【讨论】:
以上是关于Spring Boot 1.4:LocalDateTime 映射到 varbinary 而不是时间戳类型的主要内容,如果未能解决你的问题,请参考以下文章
使用 Spring Boot 2 和 Kotlin 进行 Jackson 反序列化,无法构造 `java.time.LocalDate` 的实例
如何在 Spring Boot 1.4 中自定义 Jackson
无法使用 Jackson 将 java.time.LocalDate 序列化为字符串