时间戳列的Hibernate模式验证错误



从joda转换时。时间类到java。time类在应用程序中使用Spring Boot 2.7.0, Hibernate 5.2.10。最后,在Java 11中,我遇到了一个从Hibernate模式验证阶段抛出错误的问题。

错误是

由以下原因引起:模式验证:列中遇到错误的列类型[header_date_create] in table [daily_ count];发现[日期
在org.hibernate.tool.schema.internal. abstractschemavalidator . validatecolumtype (AbstractSchemaValidator.java:167)
在org.hibernate.tool.schema.internal.AbstractSchemaValidator.validateTable(AbstractSchemaValidator.java:151)

postgresql的列定义是时间戳。

@Entity Java类中的列定义为:
@Column(name = " header_date_created")
private Date headerDateCreated;

我甚至尝试过使用java。@Basic@Temporal的持久性注释,以澄清类型。但是会触发相同的错误。TemporalType.TIMESTAMPTemporalType.DATE都试过,但没有效果。

在数据库模式中,所有日期都定义为SQL类型的时间戳。使用joda时。使用LocalDateTime的实体类。现在我使用java.util.Date进行转换。此工作类型适用于使用JPA审计的带有@CreatedDate和@LastModifedDate注释的实体,但将其用于其他日期成员会导致上述错误。

我尝试过的其他类型是OffsetDateTime和LocalDateTime类,但结果总是相同的。

不知道我做错了什么。还有人遇到这个问题吗?

问题原来是DDL不一致。列定义最终是日期,而不是时间戳。

最新更新