Я хочу выполнить проверку моих сущностей в два этапа. Хотя я использую defaultValidatorFactory для проверки всех полей моих сущностей перед сохранением в базе данных, я хотел бы выполнить частичную проверку моих сущностей на более раннем этапе. Но я не могу найти способ настроить мой валидатор (или validatorFactory).
Допустим, у меня есть следующий класс:
public class Car {
@NotNull
private String manufacturer;
@AssertTrue
private boolean isRegistered;
public Car(String manufacturer, boolean isRegistered) {
super();
this.manufacturer = manufacturer;
this.isRegistered = isRegistered;
}
}
Когда я делаю полную проверку своей сущности, я использую данный код:
Validator validator = validation.buildDefaultValidatorFactory().getValidator();
Set<ConstraintViolation<Car>> errors = validator.validate(car);
Это прекрасно работает и проверяет аннотации NotNull и AssertTrue.
Теперь я хочу выполнить частичную проверку. Под частичной проверкой я подразумеваю только проверку, например, ограничений NotNull, и игнорирование других аннотаций.
Есть ли способ получить Validator или ValidatorFactory, которые используют настраиваемый ограниченный список валидаторов?
Вы можете найти множество вещей для создания своего собственного средства проверки ограничений / ограничений. В моем случае я хочу проверить только некоторые ограничения.
Может быть, я смогу создать собственную ConstraintValidatorFactory и вставить ее в контекст проверки? Я обнаружил, что мы можем перенастроить контекст фабрики с помощью следующего кода, но я не знаю, как с этим справиться.
ValidatorFactory validatorFactory = Validation.buildDefaultValidatorFactory();
validatorFactory.usingContext().constraintValidatorFactory(myCustomFactory);
На данный момент я потерян. Кто-то уже сделал что-то подобное? Ты хоть представляешь, как я могу это сделать? Спасибо за ваше время.
Я использую Java 8 и Hibernate Validator 6.0.14.