私は 利用可能な制約のリスト を確認していましたjavax.validation
パッケージと、フィールドにnullを強制する注釈 @ Null があることに気付きました。
私はそれがnullであることをすでに知っている場合、それを私のフィールドに追加するポイントが何であるかを理解していません。
たとえば、次のクラスを見てください。
public class MyClass{
@NotNull
private String myString1;
@Null
private String myString2;
// getter setters...
}
@NotNull
完全に意味があります。期待しないmyString1
をnullにします。だが @Null
はmyString2
役に立たない。常にnullであるべきフィールドを持つことのポイントは何ですか。
「検証グループ」と組み合わせて_@Null
_を使用して、特定の場合にのみnull制約を検証することができます。
Hibernateが提供する検証グループに関する適切な説明と例
検証グループをシンプルなインターフェースとして定義します
_public interface FirstSave {}
_
それを制約で使用します
_public class MyClass {
@Null(groups = FirstSave.class)
private LocalDate lastUpdate;
}
_
次に、lastUpdate
でない場合null
を呼び出し、validator.validate(myClassInstance)
を呼び出さない場合制約違反が発生します(デフォルトグループが使用されました)が、validator.validate(myClassInstance, FirstSave.class)
を呼び出します。
また、アノテーションの使用方法について独自の実装を提供する可能性もあります。つまり、検証メソッドが_@Null
_でアノテーションされていることを確認しました。ここで、メソッドによって返されるnull
は、すべてが問題ないことを意味します。バックグラウンドで、アノテーション付きメソッドがnullではない結果を返した場合の対処方法についてはおそらくカスタム実装がありましたが、コードには深く入りませんでした...