Java 是否可以使用Hibernate验证运行一个具体的验证

Java 是否可以使用Hibernate验证运行一个具体的验证,java,hibernate,validation,Java,Hibernate,Validation,我们在一个项目中使用Hibernate验证已经很长时间了,而且效果很好。 但我想知道是否可以只按需运行某些验证,而不是在对验证器调用valid()时或在保存之前。 例如,我有一门课: @ValidationOne @ValidationTwo @Entity public class MyClass{ ... } ValidationOne和ValidationTwo由一个接口定义,如Validation Api所述: @Target({ ElementType.TYPE, ANNOTA

我们在一个项目中使用Hibernate验证已经很长时间了,而且效果很好。 但我想知道是否可以只按需运行某些验证,而不是在对验证器调用valid()时或在保存之前。 例如,我有一门课:

@ValidationOne
@ValidationTwo
@Entity
public class MyClass{
  ...

}
ValidationOne和ValidationTwo由一个接口定义,如Validation Api所述:

@Target({ ElementType.TYPE, ANNOTATION_TYPE })
@Retention(RUNTIME)
@Constraint(validatedBy = ValidationOneValidator.class)
@Documented
public @interface ValidationOne {

  String message() default "{ValidationOne.invalid.message}";

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

  Class<? extends Payload>[] payload() default {};
}
@Target({ElementType.TYPE,ANNOTATION\u TYPE})
@保留(运行时)
@约束(validatedBy=validationNoValidator.class)
@记录
public@interface-ValidationOne{
字符串消息()默认值“{ValidationOne.invalid.message}”;
类[]组()默认值{};
类请参见批注定义上的
groups()
属性?它允许您使用类指定要运行的验证

例如,让我们假设:

public class SingleRun {}

@ValidationOne(groups={SingleRun.class, javax.validation.groups.Default.class})
@ValidationTwo
@Entity
public class MyClass{...}
这允许您像这样运行单个验证:

javax.validation.Validator validator = ...;
MyClass myClass = ...;
validator.validate(myClass, SingleRun.class);
手动验证时,可以指定要通过组类运行的验证。如果未指定验证,则假定为默认组

javax.validation.Validator validator = ...;
MyClass myClass = ...;
validator.validate(myClass, SingleRun.class);