theonedev/onedev · error · ValidationException
Unable to reach the property to validate.
Error message
Unable to reach the property to validate.
What it means
Hibernate Validator's validateProperty walks the given propertyPath to reach the value to validate. If the path cannot be resolved against the root bean (the current bean reached is null, e.g. an intermediate element in the path is null), it throws "Unable to reach the property to validate". This is an IllegalArgumentException-style failure per the Bean Validation spec.
Source
Thrown at server-core/src/main/java/org/hibernate/validator/internal/engine/ValidatorImpl.java:215
sanityCheckPropertyPath( propertyName );
sanityCheckGroups( groups );
@SuppressWarnings("unchecked")
Class<T> rootBeanClass = (Class<T>) object.getClass();
BeanMetaData<T> rootBeanMetaData = beanMetaDataManager.getBeanMetaData( rootBeanClass );
if ( !rootBeanMetaData.hasConstraints() ) {
return Collections.emptySet();
}
PathImpl propertyPath = PathImpl.createPathFromString( propertyName );
BaseBeanValidationContext<T> validationContext = getValidationContextBuilder().forValidateProperty( rootBeanClass, rootBeanMetaData, object,
propertyPath );
BeanValueContext<?, Object> valueContext = getValueContextForPropertyValidation( validationContext, propertyPath );
if ( valueContext.getCurrentBean() == null ) {
throw LOG.getUnableToReachPropertyToValidateException( validationContext.getRootBean(), propertyPath );
}
ValidationOrder validationOrder = determineGroupValidationOrder( groups );
return validateInContext( validationContext, valueContext, validationOrder );
}
@Override
public final <T> Set<ConstraintViolation<T>> validateValue(Class<T> beanType, String propertyName, Object value, Class<?>... groups) {
Contracts.assertNotNull( beanType, MESSAGES.beanTypeCannotBeNull() );
sanityCheckPropertyPath( propertyName );
sanityCheckGroups( groups );
BeanMetaData<T> rootBeanMetaData = beanMetaDataManager.getBeanMetaData( beanType );
if ( !rootBeanMetaData.hasConstraints() ) {
return Collections.emptySet();
}View on GitHub (pinned to d44925c47c)
Solutions
- Null-check each intermediate object in the path before calling validateProperty
- Validate the parent object instead so null associations are reported as constraint violations
- Use validate() on the whole bean rather than a deep property path
Example fix
// before
validator.validateProperty(order, "customer.email");
// after
if (order.getCustomer() != null) {
validator.validateProperty(order, "customer.email");
} Defensive patterns
Strategy: validation
Validate before calling
if (bean.getCustomer() == null) return; // or validate(bean) instead of the deep path validator.validateProperty(bean, "customer.email");
Type guard
boolean canValidatePath(Object root, String path) { Object cur = root; for (String p : path.split("\\.")) { if (cur == null) return false; try { cur = java.beans.Introspector.getBeanInfo(cur.getClass()).getPropertyDescriptors(); cur = null; } catch (Exception e) { return false; } } return cur != null; } Try / catch
try { validator.validateProperty(bean, path); } catch (IllegalArgumentException e) { log.warn("Cannot reach property {}: {}", path, e.getMessage()); } Prevention
- Null-check intermediate objects before deep property paths
- Prefer whole-bean validate() when associations may be null
- Keep path strings in sync with the actual model
When it happens
Trigger: Calling validator.validateProperty(bean, "address.city") when bean.getAddress() returns null, so the intermediate 'address' cannot be traversed; or a property name that resolves to a null embedded object.
Common situations: Validating nested DTOs where an association is legitimately null at runtime; mismatch between assumed object graph and reality in entity validation before persisting.
Understand the failure class
Background: "Must be a positive integer", "Invalid value", "Unsupported": the invalid-argument-value error family, when a library rejects the value you pass — this error's family across 35 libraries.
Related errors
- Invalid property path.
- Type not supported for unwrapping: {type}
- The group must not be null.
- Invalid property path: {path}.
- Error validating imported build spec (import project: %s, im
AI-assisted analysis of theonedev/onedev@d44925c47c (2026-09-06).
Data as JSON: /api/errors/1752a0020951809a.
Report an issue: GitHub.