Spring将2.0.2迁移到2.1.4 Hibernate验证程序错误

时间:2019-04-24 15:41:22

标签: java spring hibernate hibernate-validator

我正在尝试将我的Spring-boot Web应用程序从2.0.2迁移到2.1.4,但是当我尝试使用验证器找到一个元素时,我遇到了一个问题,休眠抛出异常

    override func viewDidAppear(_ animated: Bool) {

        if UserDefaults.standard.float(forKey: "isLoggedIn") == 1 {
            self.performSegue(withIdentifier: "studentSegue", sender: self)
        }

        if UserDefaults.standard.float(forKey: "isLoggedIn") == 2 {
            self.performSegue(withIdentifier: "lecturerSegue", sender: self)
        }

        else{
            return
        }

    }

SpringData.java

HV000243: Constraint 
validators.annotations.StringaData references constraint validator type 
validators.impl.DateValidator, but this validator is defined for constraint type 
validators.annotations.StringaData.

和DateValidator.java

@Target({ElementType.FIELD })
@Retention(RUNTIME)
@Constraint(validatedBy = DateValidator.class)
public @interface StringaData {

      String message() default MessagesKeys.MUST_BE_DATE;

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

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

我在这里https://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/#validator-customconstraints-constraintannotation

阅读了文档

这是我的应用验证器的课程

public class DateValidator implements ConstraintValidator<StringaData, String> {

    @Override
    public boolean isValid(String str, ConstraintValidatorContext context) {
        if( str != null && ValidationUtilsCustom.isNotEmptyOrWhitespace(str))
            return ValidationUtilsCustom.isStringDate(str);
        return true;
    }
}

我在做什么错了?

这是我的Web应用程序中依赖项的完整列表

public class elementDTO implements Serializable {

    private BigDecimal Id; // Id or Primary Key

    @StringaData
    private String dataStr;
    @StringaData
    private String field2Str;

    //getter and setter

}

1 个答案:

答案 0 :(得分:2)

哼。真的很奇怪。

您确定您的类路径中没有StringaData的2种不同实现吗?因为确实看起来您有两个具有相同名称的不同类,并且这会造成混乱。

这也可能是类加载器的问题,但是通常,在典型的Spring设置中没有这些。