首页 >Java >java教程 >如何在 JPA 2.0/Hibernate 中组合验证多个字段?

如何在 JPA 2.0/Hibernate 中组合验证多个字段?

Linda Hamilton
Linda Hamilton原创
2024-11-05 22:30:02357浏览

How to Validate Multiple Fields in Combination in JPA 2.0/Hibernate?

验证组合中的多个字段

在 JPA 2.0/Hibernate 中,多个字段上的简单 @NotNull 注释只会验证单个字段。要验证字段组合,请考虑使用类级约束。

如 Bean 验证先睹为快第二部分:自定义约束中所述,类级约束允许将验证逻辑应用于对象内的多个属性。这对于依赖于多个字段的复杂验证规则特别有用。

实现

要实现类级约束,请定义一个注释(@AddressAnnotation)和一个约束验证器(多国地址验证器)。注解指定了要应用的验证规则,而验证器则实现了验证字段组合的逻辑。

@AddressAnnotation 
public class Address {
    @NotNull @Max(50) private String street1;
    @Max(50) private String street2;
    @Max(10) @NotNull private String zipCode;
    @Max(20) @NotNull String city;
    @NotNull private Country country;
}

public class MultiCountryAddressValidator implements ConstraintValidator<AddressAnnotation, Address> {
    public boolean isValid(Address object, ConstraintValidatorContext context) {
        // Validate zipcode and city depending on the country
        // ...
    }
}

在验证器中,将对象实例传递给 isValid 方法,允许访问所有用于验证目的的字段。验证器可以检查字段之间的相互依赖关系,例如邮政编码和城市之间的相关性。

用法

一旦定义,类级约束就可以应用于使用注释的模型类:

@AddressAnnotation
public class MyModel {
    public Integer getValue1() {
        //...
    }
    public String getValue2() {
        //...
    }
}

此注释指示应使用 MultiCountryAddressValidator 来验证 getValue1() 和 getValue2() 的组合。如果两个字段都为空,则模型被视为无效。否则,该模型是有效的。

以上是如何在 JPA 2.0/Hibernate 中组合验证多个字段?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn