我有很多在类字段上定义了 JSR 303 验证注释的类。由于我们使用 ORM 和延迟加载,存在应该在 getter 而不是字段(ORM 集成)上定义约束的问题。
我不想花时间修改整个模型定义。所以我的想法是在运行时移动约束。我发现约束定义可以通过BeanDescriptor获得,如示例中所示。我可以访问在字段级别定义的所有约束。
我的问题是没有设置方法来改变当前的约束。当我调试代码时,我发现只有两点应该更改以将约束移动到 getter 访问,但我不知道该怎么做。
{MetaConstraint{constraintType=javax.validation.constraints.NotNull, location=BeanConstraintLocation{beanClass=ServiceAddress, propertyName='isVirtual' }}=java.lang.Object@56811df,
MetaConstraint{constraintType=org.hibernate.validator.constraints.NotEmpty, location=BeanConstraintLocation{beanClass=ServiceAddress, propertyName='postalCode' }}=java.lang.Object@56811df,
MetaConstraint{constraintType=org.hibernate.validator.constraints.NotEmpty, location=BeanConstraintLocation{beanClass=ServiceAddress, propertyName='code' }}=java.lang.Object@56811df,
...}
谢谢并希望您的帮助。