【发布时间】:2017-03-23 16:45:47
【问题描述】:
我使用 Spring boot 1.4.2,它带来了休眠 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 数据库中的 DATE。
在我的数据库中,我将其声明为 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)]
令我惊讶的是,如果我将 DB 定义更改为 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)]
这只是上一条的相反消息。
我也尝试使用AttributeConverter<LocalDate, java.sql.Date>,而不是包含hibernate-java8,但这会产生相同的错误结果。
我必须怎么做才能将我的 LocalDate 正确映射到数据库中的 DATE?
我还尝试使用映射到 TIMESTAMP 的 LocalDateTime 字段,这可以正常工作...
【问题讨论】:
标签: spring hibernate jpa h2 java-time