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