Вы можете создать свой собственный валидатор и использовать его в своей сущности.
По сути, вы создаете новую аннотацию, как показано ниже:
@Target( { ElementType.PACKAGE })
@Retention(RUNTIME)
@Constraint(validatedBy = MultilangualDataValidator.class)
public @interface MultilangualData{
String message() default "MultilangualData validation failed";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
И пишете валидатор для проверки всех ваших условий, когда эта аннотация используется:
public class MultilangualDataValidator implements ConstraintValidator<MultilangualData, String> {
private MultilangualData multilangualData;
public void initialize(MultilangualData constraintAnnotation) {
this.multilangualData = constraintAnnotation.value();
}
public boolean isValid(String object, ConstraintValidatorContext constraintContext) {
// Do your validation here.
}
}
По ссылке: https://docs.jboss.org/hibernate/validator/4.1/reference/en-US/html/validator-customconstraints.html