2016-06-03 9 views
2

Ich habe kürzlich unser Projekt von der Verwendung von Joda time auf Java 8's java.time aktualisiert.Wie behebe ich "HV000030: Es konnte kein Validator für den Typ gefunden werden: java.time.LocalDateTime" javax.validation

In den meisten Fällen war die Übung ein Erfolg; das heißt, es baut! Allerdings versagen einige meiner Tests mit:

javax.validation.UnexpectedTypeException: HV000030: Nein Validator konnte für Typ gefunden werden: java.time.LocalDateTime.

Ich benutze Hibernate 5.1, Hibernate-Validator 5.2.4, Hibernate-java8 Version 5.1 und Federversion 4.2.0.

Ich habe andere Vorschläge gesehen, die sagen, @NotEmpty Anotation mit @NotNull zu ersetzen. Ich habe dies getan, aber immer noch das gleiche Problem oben.

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

+0

Mögliches Duplikat: http://StackOverflow.com/Questions/30249829/Error-No-Validator-Could-Be-Found-Fo-Type-Java-Time-localdate – assylias

Antwort

2

Um dies zu beheben, löschte ich alle Anmerkungen von oberhalb meiner LocalDateTime-Objekte in meinen Modellen. Zum Beispiel:

@NotNull

privaten Local Datums- und Uhrzeit;

zu

// @ NotNull --commented aus der Entfernung zu demonstrieren. Sie sollten dies tatsächlich löschen.

private LocalDateTime dateTime;

Ich löschte dann die Tabellen, die Hibernate von vorherigen Wiederaufbau mit Joda Time generiert hatte.

Die Lösung wurde zum Teil inspiriert von: http://www.thoughts-on-java.org/hibernate-5-date-and-time/ in dem Schluß, wo der Verfasser:

Das macht sie noch einfacher alte java.util.Date zu verwenden, als da Sie don Ich muss keine zusätzlichen Anmerkungen hinzufügen.

Es gibt jedoch eine ernsthafte Lektion, die hier zu lernen ist; Stellen Sie sicher, dass Ihre Datenbank mit Ihrem aktualisierten Modell kompatibel ist. Für mich löschte es, für die Unit-Tests. Aber wenn ich 'live' gehe, muss die Datenbank auf eine vorsichtigere Art und Weise aktualisiert werden, nicht die gesamte Sache zu vernichten!

Verwandte Themen