java - 如何避免 Hibernate Validator ConstraintDeclarationException?

标签 java spring hibernate validation hibernate-validator

我的 WebService 基于 Spring 4,并且我正在使用 Hibernate Validator(超越 MethodValidationPostProcessor)。我的问题是我有我的 ClientService 接口(interface)及其实现。因此,我在实现上放置了 Bean Validation 约束,这迫使我将该约束放置在接口(interface)上(抛出 ConstraintDeclarationException)(或在两者中)。

我想知道两件事:

  1. 为什么会这样?为什么它强制我在界面上施加所有约束?原因是什么?
  2. 有什么方法可以将约束仅放在实现中吗?

提前致谢!问候

最佳答案

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

回答你的第二个问题,目前没有办法对实现类施加限制。有HV-872建议将这些规则的可配置放宽作为 Hibernate Validator 的特定功能来实现,但尚未实现。

关于java - 如何避免 Hibernate Validator ConstraintDeclarationException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30929255/

相关文章:

java - 具有不同日志级别的不同 java 进程具有相同的 log4j2.xml

java - 如何在 Spring Boot 中手动验证用户身份?

java - 为什么 "@Transactional(propagation = propagation.NEVER)"不起作用?

java - 是否可以将变量用作@JsonRootName?

hibernate - 在 Hibernate 顺序标准中将字符串转换为 int

java - 如何处理在 SWIG 中为 shared_ptr 返回 nullptr 的方法(C++ 到 Java)

java - 如何解决 Java 方法引用歧义

java - 如何在从移动客户端调用的 Spring REST Web 服务中创建和销毁 session

spring - 在 Spring 项目中使用 DataSource en sessionFactory 的 Hibernate 注释

java - Spring事务中数据未提交到DB