/ / Wie gehe ich vor? “HV000030: Für den Typ: java.time.LocalDateTime wurde kein Validator gefunden

Wie behebe ich "HV000030: Es konnte kein Validator für den Typ gefunden werden: java.time.LocalDateTime" javax.validation - hibernate, java-8, java-time

Ich habe kürzlich unser Projekt von der Verwendung von Joda Time auf Java 8 java.time aktualisiert.

Die Übung war größtenteils ein Erfolg. das heißt, es baut! Einige meiner Tests schlagen jedoch fehl mit:

javax.validation.UnexpectedTypeException: HV000030: Keine Prüfung möglich für den Typ: java.time.LocalDateTime gefunden werden.

Ich verwende Hibernate 5.1, Hibernate-Validator 5.2.4, Hibernate-java8 Version 5.1 und Spring Version 4.2.0.

Ich habe andere Vorschläge gesehen, die sagen, @NotEmpty anotation durch @NotNull zu ersetzen. Ich habe das getan, habe aber trotzdem das gleiche Problem oben.

Irgendwelche Vorschläge? Eine fehlende Abhängigkeit (hoffentlich!)?

Antworten:

2 für die Antwort № 1

Um dies zu beheben, entfernte ich alle Anmerkungen über meinen LocalDateTime-Objekten in meinen Modellen. Zum Beispiel:

@Nicht null

private LocalDateTime dateTime;

zu

// @ NotNull --commented, um die Entfernung zu demonstrieren. Sie sollten das eigentlich löschen.

private LocalDateTime dateTime;

Ich habe dann die Tabellen gelöscht, die Hibernate aus der vorherigen Neuerstellung mit Joda Time generiert hatte.

Die Lösung wurde teilweise inspiriert von: http://www.thoughts-on-java.org/hibernate-5-date-and-time/ in der Schlussfolgerung, wo der Autor angibt:

Dies macht sie noch einfacher zu bedienen als das alte java.util.Date Sie müssen keine zusätzlichen Anmerkungen hinzufügen.

Hier gibt es jedoch eine ernste Lektion zu lernen;Stellen Sie sicher, dass Ihre Datenbank mit Ihrem aktualisierten Modell kompatibel ist. Für mich war das Löschen genug, für die Unit-Tests. Wenn Sie jedoch "live" gehen, muss die Datenbank auf vorsichtige Weise aktualisiert werden, nicht die ganze Sache!