どのシナリオで制約を特定のグループにバインドすることが役立つかわかりません。
グループは、部分的な検証(およびシーケンスの検証)に使用されます。クラスに10個のフィールドがある場合、そのうちの8個をAで、2個をBでマークできます。次に、 AグループまたはBグループのフィールドのみを検証することを決定できます。逆に、 C@MyConstraint
という名前の特定のグループに属している必要があります。意味がない。グループは、多かれ少なかれ、同じクラスの他のフィールドからいくつかのフィールドを区別するために使用される名前です。絶対的な意味はありません。グループは、制約定義ではなく検証に役立ちます。グループは、制約ではなくフィールドに関連しています。
さらに、制約定義でグループ名を非表示にすると、フィールドがすべて一緒に検証されていると考えることができるため、エラーが発生する可能性があります。
@Email
private String mail;
@Password
private String pass;
@VAT
private String vatCode;
部分的な検証があるかどうかを確認できますか?
編集
2番目のコメントに関連して:制約のない5つのフィールドを持つクラスがあるとします。それらのうちの3つは整数です。これらの3つのフィールドの合計を検証する場合は、提案するようにクラスレベルの制約を作成する必要があります。このようにして、カスタムアノテーションはフィールドではなくクラスに適用されるので、フィールドでグループをどのように定義できますか?
代わりに、次のようなものを使用できます。
@Sum(min = 250, fields = {"length", "width", "height"})
public class MyClass {
private String type;
private String code;
private int length;
private int width;
private int height;
...
}