gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 19:14:05 26 4
gpt4 key购买 nike

我使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com