hibernate/hibernate-orm · error · IllegalStateException
Could not resolve discriminator value
Error message
Could not resolve discriminator value
What it means
Error "Could not resolve discriminator value" thrown in hibernate/hibernate-orm.
Source
Thrown at hibernate-core/src/main/java/org/hibernate/metamodel/mapping/EmbeddableDiscriminatorConverter.java:71
String discriminatorName,
JavaType<O> domainJavaType,
JavaType<R> relationalJavaType,
List<EmbeddableDiscriminatorValueDetailsImpl> valueMappings) {
super( discriminatorName, domainJavaType, relationalJavaType );
discriminatorValueToDetailsMap = new HashMap<>( valueMappings.size() );
embeddableClassNameToDetailsMap = new HashMap<>( valueMappings.size() );
valueMappings.forEach( valueDetails -> {
discriminatorValueToDetailsMap.put( valueDetails.getValue(), valueDetails );
embeddableClassNameToDetailsMap.put( valueDetails.getIndicatedEntityName(), valueDetails );
} );
}
@Override
public O toDomainValue(R relationalForm) {
assert relationalForm == null || getRelationalJavaType().isInstance( relationalForm );
final var matchingValueDetails = getDetailsForDiscriminatorValue( relationalForm );
if ( matchingValueDetails == null ) {
throw new IllegalStateException( "Could not resolve discriminator value" );
}
//noinspection unchecked
return (O) matchingValueDetails.getEmbeddableClass();
}
@Override
public EmbeddableDiscriminatorValueDetailsImpl getDetailsForDiscriminatorValue(Object relationalValue) {
final var valueMatch = discriminatorValueToDetailsMap.get( relationalValue );
if ( valueMatch != null ) {
return valueMatch;
}
throw new HibernateException( "Unrecognized discriminator value: " + relationalValue );
}
@Override
public DiscriminatorValueDetails getDetailsForEntityName(String embeddableClassName) {
final var valueDetails = embeddableClassNameToDetailsMap.get( embeddableClassName );
if ( valueDetails != null ) {View on GitHub (pinned to fad1729dce)
Solutions
- Declare discriminator mappings for every embeddable subtype so the stored value can be resolved.
- Verify the embeddable discriminator column contains only declared values.
When it happens
Trigger: Thrown when an embeddable discriminator value from the result set cannot be resolved to a mapped embeddable subtype.
Common situations: See trigger scenarios.
AI-assisted analysis of hibernate/hibernate-orm@fad1729dce (2026-08-22).
Data as JSON: /api/errors/bce64d13f42e5353.
Report an issue: GitHub.