如何避免Hibernate Validator ConstraintDeclarationException?

时间:2015-06-19 03:04:18

标签: java spring hibernate validation hibernate-validator

我有基于Spring 4的WebService,我正在使用Hibernate Validator(超出MethodValidationPostProcessor)。我的问题是我有ClientService接口及其实现。所以我把Bean Validation约束放在了实现上,它迫使我把这些约束放在接口上(抛出ConstraintDeclarationException)(或者在两者中)。

我想知道两件事:

  1. 为什么这样工作?为什么它迫使我将所有约束放在界面上?是什么原因?
  2. 有没有办法只将约束放在实现中?
  3. 提前致谢!此致

1 个答案:

答案 0 :(得分:2)

回答你的第一个问题。该行为在Bean Validation规范部分4.5.5中指定。 Method constraints in inheritance hierarchies。基本上,规则是不能在子类型中加强方法的前提条件(由参数约束表示)。这就是所谓的Liskov substitution principle

要回答第二个问题,目前无法在实现类上设置约束。有HV-872建议将这些规则的可配置放宽作为Hibernate Validator特定功能实现,但尚未实现。