从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.TIMESTAMP
和TemporalType.DATE
都试过,但没有效果。
在数据库模式中,所有日期都定义为SQL类型的时间戳。使用joda时。使用LocalDateTime的实体类。现在我使用java.util.Date进行转换。此工作类型适用于使用JPA审计的带有@CreatedDate和@LastModifedDate注释的实体,但将其用于其他日期成员会导致上述错误。
我尝试过的其他类型是OffsetDateTime和LocalDateTime类,但结果总是相同的。
不知道我做错了什么。还有人遇到这个问题吗?
问题原来是DDL不一致。列定义最终是日期,而不是时间戳。