休眠中的Java 8 LocalDate错误地映射到TIMESTAMP
我使用Spring Boot 1.4.2,它带来了hibernate5.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)]
令我惊讶的是,如果我将数据库定义更改为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>但这会产生相同的错误结果。
我还尝试了将LocalDateTime
字段映射到TIMESTAMP,并且此方法没有问题…
回答:
因此,我通过columnDefinition="DATE"
在@Column
批注中添加来使其运行。
@Entity@Table(name = "my_alarms_timeline", indexes = {...})
public class MyAlarm {
...
@Column(name = "validity_date", columnDefinition = "DATE")
@NotNull
private LocalDate validityDate;
}
不知道为什么没人能看到这个问题…
以上是 休眠中的Java 8 LocalDate错误地映射到TIMESTAMP 的全部内容, 来源链接: utcz.com/qa/410152.html