spring - Hibernate 中的 Java 8 LocalDate 错误地映射到 TIMESTAMP

标签 spring hibernate jpa h2 java-time

我使用 Spring boot 1.4.2,它带来了 hibernate 5.0.11 (JPA 2.1)。 我想在我的实体中使用 Java 8 时间类,因此包含 hibernate-java8 .

我的实体定义了 LocalDate 字段。

@Entity
@Table(name = "my_alarms_timeline", indexes = {...})
public class MyAlarm {
    ...
    @Column(name = "validity_date")
    @NotNull
    private LocalDate validityDate;
}

我希望将其映射到我的 H2 数据库中的日期。

在我的数据库中,我将其声明为 validity_date DATE NOT NULL, .

当我尝试运行测试时,出现以下错误:

[INFO] Caused by: org.hibernate.tool.schema.spi.SchemaManagementException: 
    Schema-validation: wrong column type encountered in column [validity_date] in table [my_alarms_timeline]; 
    found [date (Types#DATE)], but expecting [timestamp (Types#TIMESTAMP)]

令我惊讶的是,如果我将数据库定义更改为 validity_date TIMESTAMP NOT NULL,我收到错误

Caused by: org.hibernate.tool.schema.spi.SchemaManagementException: 
    Schema-validation: wrong column type encountered in column [validity_date] in table [my_alarms_timeline]; 
    found [timestamp (Types#TIMESTAMP)], but expecting [date (Types#DATE)]

这只是上一条消息的反向消息。

我也尝试过,而不是包含 hibernate-java8 ,使用 AttributeConverter<LocalDate, java.sql.Date>但这会产生相同的错误结果。

我必须做什么,才能将我的 LocalDate 正确映射到数据库中的 DATE?

我还尝试过 LocalDateTime字段映射到时间戳,这可以正常工作......

最佳答案

因此,我通过向 @Column 注释添加 columnDefinition="DATE" 来运行它。

@Entity
@Table(name = "my_alarms_timeline", indexes = {...})
public class MyAlarm {
    ...
    @Column(name = "validity_date", columnDefinition = "DATE")
    @NotNull
    private LocalDate validityDate;
}

不确定为什么其他人没有看到这个问题...

关于spring - Hibernate 中的 Java 8 LocalDate 错误地映射到 TIMESTAMP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40514341/

相关文章:

java - Spring AOP 在 Tomcat 和 tcserver 中不起作用

java - Spring @Transactional 失败后不回滚

java - Envers 与 Hibernate 拦截器,onDelete

java - Hibernate ORM 建模复合键何时将数据插入 MYSQL

java - Spring @Transactional 隔离传播

java - Mockito spy 测试

java - hibernate session 范围

java - 设置 setMaxResults 时 JPA 查询速度极慢

java - Spring data JPA - 从一个实体参数中排除 ID 列

java - Thread.sleep 是否可以减少读取和保存大文件时的内存问题