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 № 1Per 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!