
使用 JPA 2.0/Hibernate 验证字段组合
在 JPA 2.0/Hibernate 中,您可能会遇到需要组合字段的情况得到验证。例如,您可能有一个带有 getter getValue1() 和 getValue2() 的模型,并且仅当两个 getter 均非 null 时,该模型才被视为有效。
要执行此类验证,您可以使用类Bean Validation 提供的级别约束。类级约束作用于整个对象实例而不是单个属性。
定义类级约束注释
首先,定义类级约束注释,比如@AddressAnnotation:
<code class="java">@Constraint(validatedBy = MultiCountryAddressValidator.class)
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface AddressAnnotation {
String message() default "{error.address}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}</code>实现约束验证器
接下来,实现一个约束验证器,比如MultiCountryAddressValidator,它验证字段的组合:
<code class="java">public class MultiCountryAddressValidator implements ConstraintValidator<AddressAnnotation, Address> {
public void initialize(AddressAnnotation constraintAnnotation) {}
public boolean isValid(Address object, ConstraintValidatorContext context) {
Country country = address.getCountry();
// Validation logic based on country-specific rules
return isValid;
}
}</code>注释类
最后,使用类级约束注释来注释要验证的类:
<code class="java">@AddressAnnotation
public class MyModel {
// ...
}</code>通过利用类级约束,您可以在 JPA 2.0/Hibernate 中有效验证字段组合,确保模型的完整性。
以上是如何在 JPA 2.0/Hibernate 中使用类级约束验证字段组合?的详细内容。更多信息请关注PHP中文网其他相关文章!