validation - 有没有一种方法可以使用 Hibernate 进行嵌套约束验证,而无需使用 @Valid 注释?

标签 validation bean-validation hibernate-validator

我有一个巨大的对象模型,其中包含许多嵌套对象和字段。我需要验证基础对象的所有 字段。有没有办法在不向所有字段添加 @Valid 注释的情况下做到这一点?

示例对象:

class A { @NotNull private String id; ...}
class B { @NotNull private String id; List<A> aList; ...}
class C { @NotNull private String id; B bInstance; A aInstance; ...}
class D { @NotNull private String id; List<C> cList; ... }
...

如果我需要递归地验证 D 的实例,我必须将 @Valid 放在 A、B、C、D 的所有相关字段中。 我的对象模型中有大量对象。很容易错过将注释放在字段上。

最佳答案

不,您应该将所有必需的 @Valid 注释添加到您的对象图中。

如果这真的会成为一个问题,您可以尝试使用 Hibernate Validator 的 API 来自动处理动态约束违规。您必须反射性地遍历您的对象模型并为遇到的每个引用(普通对象引用或集合/映射/数组)调用 valid()

但我建议不要这样做,因为它增加了相当多的复杂性,并使解决方案比查看普通 @Valid 时更难理解。注释。

关于validation - 有没有一种方法可以使用 Hibernate 进行嵌套约束验证,而无需使用 @Valid 注释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35330920/

相关文章:

java - Hibernate validator 不适用于 Spring

regex - 如何在 Angular JS 范围内给出正则表达式模式

php - 如何自动聚焦唯一错误的输入字段?

Silverlight 验证消息位置

java - Hibernate 字段或构造函数或两者的验证注释?

java - hibernate 验证不使用 Spring Boot LocalValidatorFactoryBean

java - 特定单词多次出现的正则表达式

java - BeanValidation : Messages from ValidationMessages. 属性

java - Spring Boot是否自动解析javax和hibernate验证注解中的消息键

java - 解码正则表达式 - ^[a-zA-Z0-9 "'&!#$%()*+,-./:;? @[\\]^_`{|}~]+$