版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_17586821/article/details/80035891
承接Hibernate Validator 6.0.7.Final 之一(声明Bean约束之约束的继承性之一)。本文使用field级别的约束来测试一下约束的继承性。
- 父类
public class Car {
@NotNull(message = "制造商不能为空")
private String manufacture;
@Min(value = 2, message = "座位数量不能小于2")
private int seatCount;
public String getManufacture() {
return manufacture;
}
public void setManufacture(String manufacture) {
this.manufacture = manufacture;
}
public int getSeatCount() {
return seatCount;
}
public void setSeatCount(int seatCount) {
this.seatCount = seatCount;
}
}
- 子类
public class RentalCar extends Car {
@NotNull(message = "租赁站不能为空")
private String rentalStation;
@Max(value = 5, message = "座位数量不能大于5")
private int seatCount;
public String getRentalStation() {
return rentalStation;
}
public void setRentalStation(String rentalStation) {
this.rentalStation = rentalStation;
}
@Override
public int getSeatCount() {
return seatCount;
}
@Override
public void setSeatCount(int seatCount) {
this.seatCount = seatCount;
}
}
- 测试
@Test
public void inheritanceConstraintVer2Test() {
com.qs.mmeng.hibernate.validator.constraints.declare.inheritance.ver2.RentalCar rentalCar =
new com.qs.mmeng.hibernate.validator.constraints.declare.inheritance.ver2.RentalCar();
// 违反了来自父类的约束
rentalCar.setManufacture(null);
rentalCar.setRentalStation(null);
// 父类和子类的约束可以累加
rentalCar.setSeatCount(6);
Set<ConstraintViolation<com.qs.mmeng.hibernate.validator.constraints.declare.inheritance.ver2.RentalCar>> constraintViolations =
validator.validate(rentalCar);
logger.info("违反的约束的个数:{}", constraintViolations.size());
for (ConstraintViolation<com.qs.mmeng.hibernate.validator.constraints.declare.inheritance.ver2.RentalCar> constraintViolation : constraintViolations) {
logger.info("违反的约束:{}", constraintViolation.getMessage());
}
}
- 查看
注意,从打印的结果可以看到使用field级别的约束的时候,违反的约束的个数是4。