Hibernate Validator 6.0.7.Final 之一(宣告Bean約束之約束的繼承性之二)
阿新 • • 發佈:2018-11-24
承接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。