Java验证-将@Valid约束添加到自定义约束抛出@Valid不适用于注释类型;

Java验证-将@Valid约束添加到自定义约束抛出@Valid不适用于注释类型;,java,validation,annotations,bean-validation,Java,Validation,Annotations,Bean Validation,我有一个带有Java验证注释的模型对象 class Criteria{ @NotEmpty String id; @NotEmpty String name; String fileName; String hours; } 根据业务需求,将填充fileName或hours字段,以验证我编写的自定义验证器“CriteriaValidator” @Documented @Constraint(validatedBy = {CriteriaValida

我有一个带有Java验证注释的模型对象

class Criteria{
    @NotEmpty String id;    
    @NotEmpty String name;
    String fileName;
    String hours;   
}
根据业务需求,将填充fileName或hours字段,以验证我编写的自定义验证器“CriteriaValidator”

@Documented
@Constraint(validatedBy = {CriteriaValidator.class})
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE , ElementType.FIELD, ElementType.PARAMETER})
public @interface ValidCriteria {
    String message() default "{Criteria.Invalid}";
    Class<?>[] groups() default {};
    Class<? extends Payload>[] payload() default {};
}
我遇到的问题是方法中有两个注释。我必须添加@Valid以检查类中注释的约束。我的自定义验证器只检查是否存在两个字段之一:filename或hours

我的问题是,如何使用单个注释@ValidCriteria来验证我的特殊需求以及对象中的@NotEmpty字段


我尝试在自定义约束@ValidCriteria中添加@Valid,但出现错误“@Valid不适用于注释类型”

注释应位于Criteria类上:

@ValidCriteria
class Criteria{
    @NotEmpty String id;    
    @NotEmpty String name;
    String fileName;
    String hours;   
}

令人惊叹的。它工作得很好,我的方法签名现在只有@Valid约束。
@ValidCriteria
class Criteria{
    @NotEmpty String id;    
    @NotEmpty String name;
    String fileName;
    String hours;   
}