最近、プロジェクトを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よりもさらに使いやすくなります。 追加のアノテーションを追加する必要はありません。
ただし、ここで学ぶべき重大な教訓があります。データベースが更新されたモデルと互換性があることを確認してください。私にとっては、単体テストでは削除するだけで十分でした。しかし、「ライブ」に移行するとき、データベース全体を消すのではなく、データベースをより慎重に更新する必要があります!