При использовании проверки bean для проверки состояния объекта метод, аннотированный с помощью @AssertTrue
, вызывается 4 раза всякий раз, когда вызывается проверка. Его следует вызывать только один раз за вызов.
версия для версии Hibernate: 5.1.3. Final
Вот пример:
Для следующего класса Мотоцикл:
import javax.validation.constraints.AssertTrue;
class Motorcycle{
private int fuel;
private int tireDurability;
@AssertTrue(message = "motorcycle.not.available.to.use")
public boolean isAvailable(){
return fuel > 0 && tireDurability > 0;
}
public void toUse(){...}
}
И главное:
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
public class Main{
public static void main(String []args){
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();
Set<ConstraintViolation<Motorcycle>> violations = validator.validate(new Motorcycle());
}
}
Когда вызывается validator.validate(new Motorcycle())
, метод isAvailable()
вызывается 4 раза.
Может ли кто-нибудь помочь мне в этой ситуации? Это ошибка? Как мне обойти это?