I get a SchemaManagementException because of a type mismatch. The Hibernate version is 5.2.8.Final. The hibernate.ddl-auto is set to 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)]
The column entity is of type java.time.Instant, and the PostgreSQL column is of type TIMESTAMPTZ.
@Column(name = "end_date")
private Instant endDate;
For java.time.Instant, the Hibernate type is InstantType which maps to a TIMESTAMP JDBC type. So I understand why the error says that it's expecting a Types#TIMESTAMP. What I don't understand is that the error says that it found a Types#DATE.
Source: https://docs.jboss.org/hibernate/orm/5.2/userguide/html_single/Hibernate_User_Guide.html
One workaround is to set the column definition as
@Column(name = "end_date", columnDefinition="DATE")
private Instant endDate;
but I am not really convinced it's a solution. To me an Instant is a TIMESTAMP, not a DATE.