簡體   English   中英

Hibernate-在PostgreSQL中使用java.time.Instant

[英]Hibernate - Using java.time.Instant with PostgreSQL

由於類型不匹配,我得到了SchemaManagementException Hibernate版本是5.2.8.Final。 hibernate.ddl-auto設置為validate

org.hibernate.tool.schema.spi.SchemaManagementException: Schema-validation: wrong column type encountered in column [end_date] in table [certificate]; found [date (Types#DATE)], but expecting [timestamp (Types#TIMESTAMP)]

列實體的類型為java.time.Instant ,而PostgreSQL列的類型為TIMESTAMPTZ

@Column(name = "end_date")
private Instant endDate;

對於java.time.Instant ,Hibernate類型是InstantType ,它映射到TIMESTAMP JDBC類型。 因此,我理解為什么錯誤會提示您正在等待Types#TIMESTAMP 我不明白的是,該錯誤表明它找到了Types#DATE

資料來源: https : //docs.jboss.org/hibernate/orm/5.2/userguide/html_single/Hibernate_User_Guide.html

一種解決方法是將列定義設置為

@Column(name = "end_date", columnDefinition="DATE")
private Instant endDate;

但我真的不相信這是一個解決方案。 對我而言,即時是TIMESTAMP ,而不是DATE

解決方法不是解決方案。 對於java.time.Instant ,PostgreSQL列應為TIMESTAMP類型。 這是數據庫創建中的一個錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM