我有以下类结构
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并对其进行注释。