Java 8 LocalDate in hibernate falsch zugeordnet TIMESTAMP

Ich benutze Spring boot 1.4.2, das bringt hibernate 5.0.11 (JPA 2.1).
Ich möchte das Java 8 Zeit-Klassen in meinem Unternehmen, und so enthalten hibernate-java8.

Meiner Entität definiert ein LocalDate Feld.

@Entity
@Table(name = "my_alarms_timeline", indexes = {...})
public class MyAlarm {
    ...
    @Column(name = "validity_date")
    @NotNull
    private LocalDate validityDate;
}

Ich erwarte, dass dies abgebildet werden auf ein DATUM in meine H2-Datenbank.

In meiner DB ich erkläre dies als validity_date DATE NOT NULL,.

Wenn ich versuche, tests ausführen, bekomme ich folgende Fehlermeldung:
[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)]

Zu meiner überraschung, wenn ich den DB-definition validity_date TIMESTAMP NOT NULL, bekomme ich die Fehlermeldung

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)]

Dies ist gerade das Gegenteil der Botschaft von der vorherigen.

Ich habe auch versucht, statt wie hibernate-java8 eine AttributeConverter<LocalDate, java.sql.Date> aber das führt zum selben Fehler führen.

Was muss ich tun, damit meine LocalDate ordnungsgemäß zugeordnet ist, um ein DATUM in der DB?

Ich habe auch versucht mit einem LocalDateTime Feld zugeordnet, um einen ZEITSTEMPEL, und das funktioniert ohne Probleme...

InformationsquelleAutor Philipp | 2016-11-09

Schreibe einen Kommentar