在运行时动态禁用hibernatevalidation注释?
是否可以在运行时关闭每个类的某些约束/注释? 例如,如果我想在firstName
字段上打开@NotNull
检查,那可能吗?
这将使测试看到某个约束是否被正确触发更简单,因为我可以关闭所有其他约束,并只检查一个约束。
是否可以在运行时关闭每个类的某些约束/注释? 例如,如果我想在firstName字段上打开@NotNull检查,那可能吗?
不它不是。 Bean Validation未定义此类function。 Hibernate Validator HV-98中存在一个未解决的问题,它讨论了重新加载元数据的可能性,但即使在那里,您也需要重建validation器工厂。
您可以通过XML配置覆盖注释,然后在当时使用不同的配置重新创建Validator(Factory)
实例,但这可能不容易管理。
这将使测试看到某个约束是否被正确触发更简单,因为我可以关闭所有其他约束,并只检查一个约束。
如果是关于测试,您可以使用Validator.validateValue
来validation给定字段。 除此之外,如果您validation整个对象图并返回一组约束违规,您可以迭代它们并检查元数据。 元数据中有足够的信息来validation特定约束是否已执行且失败。
hibernatevalidation注释通常与数据库约束一起使用,因此在运行时更改行为没有意义。 但是,如果你想这样做,你可以实现自己的validation器(通过覆盖现有的)并做任何你想做的事情。
- Hibernate – PropertyNotFoundException:无法找到getter
- Hibernate生成的DDL中语法错误“type = MyISAM”无效
- Hibernate自定义UserType无法正常工作
- 如何在Hibernate注释应用程序中外部化命名查询?
- 我需要这个错误的帮助:java.lang.NoSuchMethodError
- Hibernate NoSuchFieldError INSTANCE但只适用于Struts 1?
- Hibernate为每个查询生成不同的SQL
- Hibernate OneToOne延迟加载和级联
- 如何强制Hibernate 3.3或3.5使用CGLib而不是Javassist?