Skip to content

Commit

Permalink
HHH-18515 Unrecognized discriminator value exception when running nat…
Browse files Browse the repository at this point in the history
…ive query on entity with discriminator column
  • Loading branch information
dreab8 committed Sep 20, 2024
1 parent 9c25ae2 commit bc64bed
Showing 1 changed file with 19 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,9 @@
import org.hibernate.metamodel.model.domain.NavigableRole;
import org.hibernate.metamodel.spi.MappingMetamodelImplementor;
import org.hibernate.type.BasicType;
import org.hibernate.type.descriptor.java.CharacterJavaType;
import org.hibernate.type.descriptor.java.JavaType;
import org.hibernate.type.descriptor.java.StringJavaType;

import java.util.List;
import java.util.Map;
Expand Down Expand Up @@ -113,6 +115,23 @@ public DiscriminatorValueDetails getDetailsForDiscriminatorValue(Object value) {
return notNullMatch;
}

if ( value.getClass().isEnum() ) {
final Object enumValue;
if ( getRelationalJavaType() instanceof StringJavaType ) {
enumValue = ( (Enum) value ).name();
}
else if ( getRelationalJavaType() instanceof CharacterJavaType ) {
enumValue = ( (Enum) value ).name().charAt( 0 );
}
else {
enumValue = ( (Enum) value ).ordinal();
}
final DiscriminatorValueDetails enumMatch = discriminatorValueToEntityNameMap.get( enumValue );
if ( enumMatch != null ) {
return enumMatch;
}
}

throw new HibernateException( "Unrecognized discriminator value: " + value );
}

Expand Down

0 comments on commit bc64bed

Please sign in to comment.