Если вы используете Hibernate Validator, вы можете взглянуть на динамическую полезную нагрузку.Ваша реализация валидатора будет выглядеть следующим образом:
@Override
public boolean isValid(NewUserRequestBean value, ConstraintValidatorContext context) {
// all the code you need
// make sure that you are working with Hibernate Validator contexts before unwrapping
if ( context instanceof HibernateConstraintValidatorContext ) {
context.unwrap( HibernateConstraintValidatorContext.class )
.withDynamicPayload( existingUser );
}
return validationResult;
}
, и тогда вы сможете получить доступ к той же полезной нагрузке из нарушения ограничения, если оно поднято:
Set<ConstraintViolation<NewUserRequestBean>> violations = // results of validation of your NewUserRequestBean...
// just get the violation and unwrap it to HibernateConstraintViolation.
// to stay on the safe side you should apply an instanceof check here as well before unwrapping
HibernateConstraintViolation<NewUserRequestBean> violation = violations.iterator().next()
.unwrap( HibernateConstraintViolation.class );
User existingUser = violation.getDynamicPayload( User.class );
Для получения дополнительной информации выможете проверить javadocs этих динамических методов полезной нагрузки, а также ознакомьтесь с этим разделом в документации по динамическим полезным нагрузкам