我可以在组中添加bean验证注释吗?

时间:2017-06-05 09:56:47

标签: java validation bean-validation hibernate-validator

我想构建一个仅在NotNull组上工作的Create支票,因此我可以这样写

@Data
public static class TestDto {

    @NotNullOnCreate
    // @NotNull(groups = Create.class) // instead of this
    private String id;
}

我像这样创建NotNullOnCreate

@Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER})
@Retention(RUNTIME)
@Documented
@Repeatable(NotNullOnCreate.List.class)
@ReportAsSingleViolation
@Constraint(validatedBy = {})
@NotNull(groups = Create.class)
@interface NotNullOnCreate {

    String message() default "{javax.validation.constraints.NotNull.message}";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};

    @Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER})
    @Retention(RUNTIME)
    @Documented
    @interface List {

        NotNullOnCreate[] value();
    }
}

这不起作用,因为组合约束注释(参见ConstraintDescriptorImpl#createComposingConstraintDescriptor)组将被设置为托管注释的组('默认')。

我也尝试了这个Class<?>[] groups() default {Create.class};,但这是不允许的,默认组必须为空。

我怎样才能做到这一点?我不想到处写小组。

修改

1 个答案:

答案 0 :(得分:0)

目前无法做到这一点。如果您愿意,请在Hibernate Validator issue tracker中打开一个问题,我们可以探索此功能。