Java 8 LocalDate en veille prolongée, à tort, mappé à TIMESTAMP

- Je utiliser le Printemps de démarrage 1.4.2, qui apporte hibernate 5.0.11 (JPA 2.1).
Je veux utiliser le Java 8 classes de temps dans mes entités, et donc inclus hibernate-java8.

Mon entité définit un LocalDate champ.

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

Je m'attends à être mappé à une DATE dans mon H2 base de données.

Dans ma DB j'ai déclarer ce que validity_date DATE NOT NULL,.

Lorsque j'essaie d'exécuter des tests, j'obtiens l'erreur suivante:
[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)]

À ma grande surprise, si je change la DB définition de validity_date TIMESTAMP NOT NULL, je reçois le message d'erreur

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

C'est tout l'inverse message de la précédente.

J'ai aussi essayé, au lieu de hibernate-java8, pour utiliser un AttributeConverter<LocalDate, java.sql.Date> mais cela produit le même résultat de l'erreur.

Que dois-je faire pour que mes LocalDate est correctement mappés à une DATE dans la DB?

J'ai aussi essayé avec un LocalDateTime champ mappé à un TIMESTAMP, et cela fonctionne sans problèmes...

OriginalL'auteur Philipp | 2016-11-09