/ / Come correggere "HV000030: impossibile trovare il validatore per il tipo: java.time.LocalDateTime" javax.validation - hibernate, java-8, java-time

Come aggiustare "HV000030: Impossibile trovare il validatore per il tipo: java.time.LocalDateTime" javax.validation - hibernate, java-8, java-time

Ho recentemente aggiornato il nostro progetto dall'uso di Joda time a Java 8 "s java.time.

Per la maggior parte, l'esercizio è stato un successo; vale a dire, costruisce! Tuttavia, alcuni dei miei test stanno fallendo con:

javax.validation.UnexpectedTypeException: HV000030: nessun validatore potrebbe essere trovato per tipo: java.time.LocalDateTime.

Sto usando Hibernate 5.1, Hibernate-Validator 5.2.4, Hibernate-java8 versione 5.1 e Spring versione 4.2.0.

Ho visto altri suggerimenti che dicono di sostituire @NotEmpty anotation con @NotNull. Ho fatto questo, ma ho ancora lo stesso problema sopra.

Eventuali suggerimenti? Una dipendenza mancante (si spera!)?

risposte:

2 per risposta № 1

Per risolvere questo problema ho rimosso tutte le annotazioni da sopra i miei oggetti LocalDateTime nei miei modelli. Per esempio:

@Non nullo

LocalDateTime privato dateTime;

a

// @ NotNull --commentato per dimostrare la rimozione. Dovresti effettivamente cancellarlo.

LocalDateTime privato dateTime;

Ho quindi cancellato le tabelle che Hibernate aveva generato dalla ricostruzione precedente usando Joda Time.

La soluzione è stata, in parte, ispirata a: http://www.thoughts-on-java.org/hibernate-5-date-and-time/ nella conclusione in cui l'autore afferma:

Questo li rende ancora più facili da usare rispetto al vecchio java.util.Date perché non è necessario aggiungere ulteriori annotazioni.

C'è una lezione seria da imparare qui però;Assicurati che il tuo database sia compatibile con il tuo modello aggiornato. Per me l'eliminazione è stata sufficiente, per i test unitari. Ma quando "andando in diretta" il database avrà bisogno di aggiornarmi in modo più accurato, non di mettere a fuoco tutto!