JSR-303子类验证



我有以下类结构

public Abstract class Person {
    private String fullName;
    private Address address;
    private Phone ;
}
class Staff extends Person{
    private String staffId;
}

我想在Staff类上使用JSR-303进行验证,即Staff地址和电话不能为null。然而,我还有一些其他类是Person类,我不希望应用验证。

我能想到的一种方法是重构Person,并将字段"address"one_answers"phone"推送给Staff,但这意味着重构许多其他类(更不用说这会导致冗余),因此我想避免这种情况。

更新。我已经更改了职员级别,如下

public class Staff extends Person {
    @NotNull
    private String staffEmploymentId;
    public String getStaffEmploymentId() {
        return staffEmploymentId;
    }
    public void setStaffEmploymentId(String id) {
        this.staffEmploymentId = id;
    }
    @Override
    @NotNull
    public void setPhones(List<Phone> phones) {
        super.phones = phones;
    }
    @Override
    @NotNull
    public void setAddress(Address a) {
        super.address = a;
    }
    @Override
    @NotNull
    public Address getAddress(){
        return super.address;
    }
}

但是,我有以下错误。

javax.validation.ValidationException: Property setAddress does not follow javabean conventions.

我使用的是Apache BVal,而不是Hibernate Validator。

使用JSR-330中的注释来注释getter,而不是字段。您可以覆盖Stuff中的getter并对其进行注释。

最新更新