/ /「HV000030:型の検証ツールが見つかりませんでした:java.time.LocalDateTime」javax.validation-hibernate、java-8、java-timeの修正方法

「HV000030:タイプ:java.time.LocalDateTimeにバリデータが見つかりませんでした」を修正します。javax.validation - hibernate、java-8、java-time

最近、プロジェクトをJoda timeからJava 8 "s java.timeに更新しました。

ほとんどの場合、演習は成功しました。つまり、ビルドします!しかし、私のテストのいくつかは失敗します:

javax.validation.UnexpectedTypeException:HV000030:バリデーターがありません タイプjava.time.LocalDateTimeが見つかります。

Hibernate 5.1、Hibernate-Validator 5.2.4、Hibernate-java8バージョン5.1およびspringバージョン4.2.0を使用しています。

@NotEmptyアノテーションを@NotNullに置き換えるという他の提案を見てきました。私はこれをやったが、それでも上記と同じ問題が発生する。

助言がありますか?依存関係の欠落(うまくいけば!)?

回答:

回答№1は2

これを修正するために、モデルのLocalDateTimeオブジェクトの上からすべての注釈を削除しました。例えば:

@NotNull

プライベートLocalDateTime dateTime;

// @ NotNull-削除を示すためにコメントアウトされています。これを実際に削除する必要があります。

プライベートLocalDateTime dateTime;

その後、Joda Timeを使用して以前の再構築でHibernateが生成したテーブルを削除しました。

このソリューションは、一部、次のことに触発されました。 http://www.thoughts-on-java.org/hibernate-5-date-and-time/ 著者が述べている結論:

これにより、古いjava.util.Dateよりもさらに使いやすくなります。 追加のアノテーションを追加する必要はありません。

ただし、ここで学ぶべき重大な教訓があります。データベースが更新されたモデルと互換性があることを確認してください。私にとっては、単体テストでは削除するだけで十分でした。しかし、「ライブ」に移行するとき、データベース全体を消すのではなく、データベースをより慎重に更新する必要があります!