1

一般问题:

这是使用 JSR303 bean 验证,Hibernate 参考实现。

假设我有一组自定义验证;其中一些需要数据库连接(注意:我们没有使用 Hibernate 进行 DB 元素映射,所以很遗憾这不是一个选项)。例如,我可能想在持久性之前验证外键。

无论如何,在将数据库连接传递给 Validator.validate(obj) 方法时,我看不到一种方法,以便使其可用于验证实现。出于会话一致性的原因,此连接必须与调用代码中使用的连接相同,这一点很重要。

有任何想法吗..?我真正需要的只是一种将任何类型的运行时值放入验证器实现的方法。

谢谢,

安迪

4

1 回答 1

1

您可以创建一个自定义ConstraintValidatorFactory来实例化和配置ConstraintValidator对象。该工厂可以将所需的依赖项(例如数据库连接)传递给创建的约束验证器。

如果您使用 CDI 来连接您的应用程序,您可能会对Seam Validation(免责声明:我是作者)感兴趣,它为基于 CDI 的验证器提供依赖注入。如果您使用的是 Spring 框架,您还可以在约束验证器实现中使用依赖注入。

于 2012-08-07T21:17:40.213 回答