我使用Spring boot 1.4.2,它带来了hibernate 5.0.11(JPA 2.1)。 我想在我的实体中使用Java 8时间类,因此包含hibernate-java8
。Java 8 Localization在hibernate中错误地映射到TIMESTAMP
我的实体定义了一个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)]
令我惊讶的是,如果我改变了DB定义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正确映射到DB中的DATE?
我也试图与映射到TIMESTAMP为LocalDateTime
场,而这个工程没有问题...
这对我有用。我使用的是使用Hibernate 5.0.12的Spring Boot 1.5.4。奇怪的是,我的Entity对象中的一个ZonedDateTime列被映射到MySQL VARBINARY ...但好消息是,这个问题已经修复了! – jtcotton63
得到了这个'[Request processing failed;嵌套异常是org.springframework.orm.jpa.JpaSystemException:无法反序列化;嵌套异常是org.hibernate.type.SerializationException:无法反序列化]与根源 java.io.StreamCorruptedException:无效流报头:32303138 \t在java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:863) \t在java.io.ObjectInputStream中。(ObjectInputStream.java:355) \t at org.hibernate.internal.util.SerializationHelper $ CustomObjectInputStream。 (SerializationHelper.java:309)' –