我有以下类结构
public Abstract class Person {
private String fullName;
private Address address;
private Phone ;
}
class Staff extends Person{
private String staffId;
}
我想在类Staff上使用JSR-303进行验证,其中Staff地址和phone不能具有null值。但是,我有一些其他类是Person类,我不希望要应用验证。
我能想到的一种方法是通过重构Person并将字段'address'和'phone'推送给Staff,但这意味着重构很多其他类(更不用说这会造成冗余) ,因此我想避免。
更新。 我已经更改了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。
答案 0 :(得分:1)
使用JSR-330中的注释来注释getter而不是字段。
您可以在Stuff
中覆盖getter并对其进行注释。