1

我正在使用 Spring JPA 2.0 和 Hibernate 作为 ORM 提供程序开发一个应用程序。我们对数据库只有只读访问权限,并将生成报告。我想在获取数据时进行一些验证。

@Column(name = "LOGICAL_ID", nullable = false)
@NotNull
private Long logicalId;

我添加了实现 JSR 303 规范的 Hibernate 验证器。但是在获取它时不会抛出任何运行时异常或 ConstraintViolationException?我在配置中添加了一些东西还是我错过了一些东西?请给我建议。

4

1 回答 1

2

就像我在 Java 中实现交叉验证中发布的一样

您可以使用以下代码手动验证实体;

ValidatorFactory factory = Validation.byDefaultProvider().configure().traversableResolver(new CustomTraversableResolver() ).buildValidatorFactory();
Validator validator = factory.getValidator();
Set<ConstraintViolation<YourBaseClass>> constraintViolations = Validator.validate(myEntityToValidate);

如果您希望自动为您完成此操作,可能是“javax.persistence.validation.mode”属性设置为无(http://docs.jboss.org/hibernate/entitymanager/3.6/reference/ zh/html/configuration.html)。

不过,我更喜欢手动验证,因为从那时起你就可以控制和细节,其中的约束没有通过。

于 2012-07-17T12:35:05.727 回答