У меня есть следующая структура классовJSR-303 Проверка на подклассу
public Abstract class Person {
private String fullName;
private Address address;
private Phone ;
}
class Staff extends Person{
private String staffId;
}
Я хочу, чтобы применить проверку с использованием JSR-303 на класс Персонал в котором адрес персонала и телефон не может иметь значение NULL. Тем не менее, у меня есть другие классы, которые являются классом Person, где я не хочу, чтобы проверка была применена.
Один из способов сделать это, о котором я мог подумать, - переделать «Человек» и нажать «Адрес» и «Телефон» в «Персонал», но это означает реорганизацию многих других классов (и не говоря уже о избыточности, это должно вызывать), и, следовательно, чего-то я хочу избежать.
Обновление. я изменил класс сотрудников, как следует
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.
Я пробовал это, и получил следующее исключение: javax.validation.ValidationException: свойство setAddress не соответствует javabean соглашениям. –
Убедитесь, что подписи вашего метода доступа являются 'public Address getAddress()' и 'public void setAddress (Address a)'. Вы также можете прочитать спецификацию Java Beans (http://download.oracle.com/otndocs/jcp/7224-javabeans-1.01-fr-spec-oth-JSpec/), поскольку она не очень длинная , – VGR