好的,我们希望允许用户进行手动迁移。为此,模型对象必须处于某种状态。我不想自动验证此类的每个实例或该类的任何实例。我知道如何手动调用验证器(作为一般事情),但我想知道的是我可以执行验证器而不在模型上添加这些注释吗?我只想在模型中再次执行任意验证代码。想要使用验证api的原因是因为它收集了约束违规。
例如像这样的
class ValidForMigration implements ConstraintViolation<MyModel> {
boolean isValid( MyModel model ) {
if ( model.getFoo() == null ) { return false; }
return true;
}
}
MySvc {
...
void doMigrate(... ) {
validator.validate( myModel, new ValidForMigration() )
}
}
答案 0 :(得分:1)
Bean Validation基于声明性约束的原则,即约束被声明一次 - 使用注释,XML描述符或(在Hibernate Validator中)API - 然后在对象生命周期中的适当点根据需要进行验证。因此,您在Bean验证中无法直接描述所描述的内容。
但是,Hibernate Validator constraint mapping API可能对您有所帮助。您在迁移期间使用API声明要应用的约束,并使用这些约束映射设置验证器。