我使用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)' –