我有一个巨大的对象模型,其中包含许多嵌套对象和字段。我需要验证基础对象的所有 字段。有没有办法在不向所有字段添加 @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/