休眠中的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

回到顶部