我正在使用Spring JPA 2.0和Hibernate作为ORM提供程序开发应用程序。我们只读取数据库访问权限并生成报告。我想在获取数据时进行一些验证。
@Column(name = "LOGICAL_ID", nullable = false)
@NotNull
private Long logicalId;
我添加了Hibernate验证器,它实现了JSR 303规范。但是在获取它时不会抛出任何运行时异常或ConstraintViolationException?我在配置中添加了什么或者我错过了什么?请指教我。
答案 0 :(得分:2)
就像我发布在Implementing cross-validation in 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'属性设置为none(http://docs.jboss.org/hibernate/entitymanager/3.6/reference/en/html/configuration.html)。
我更喜欢手动验证,因为那时你有控制和细节,其中约束没有通过。