Skip to content

Commit bc64bed

Browse files
committed
HHH-18515 Unrecognized discriminator value exception when running native query on entity with discriminator column
1 parent 9c25ae2 commit bc64bed

File tree

1 file changed

+19
-0
lines changed

1 file changed

+19
-0
lines changed

hibernate-core/src/main/java/org/hibernate/metamodel/mapping/MappedDiscriminatorConverter.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@
1313
import org.hibernate.metamodel.model.domain.NavigableRole;
1414
import org.hibernate.metamodel.spi.MappingMetamodelImplementor;
1515
import org.hibernate.type.BasicType;
16+
import org.hibernate.type.descriptor.java.CharacterJavaType;
1617
import org.hibernate.type.descriptor.java.JavaType;
18+
import org.hibernate.type.descriptor.java.StringJavaType;
1719

1820
import java.util.List;
1921
import java.util.Map;
@@ -113,6 +115,23 @@ public DiscriminatorValueDetails getDetailsForDiscriminatorValue(Object value) {
113115
return notNullMatch;
114116
}
115117

118+
if ( value.getClass().isEnum() ) {
119+
final Object enumValue;
120+
if ( getRelationalJavaType() instanceof StringJavaType ) {
121+
enumValue = ( (Enum) value ).name();
122+
}
123+
else if ( getRelationalJavaType() instanceof CharacterJavaType ) {
124+
enumValue = ( (Enum) value ).name().charAt( 0 );
125+
}
126+
else {
127+
enumValue = ( (Enum) value ).ordinal();
128+
}
129+
final DiscriminatorValueDetails enumMatch = discriminatorValueToEntityNameMap.get( enumValue );
130+
if ( enumMatch != null ) {
131+
return enumMatch;
132+
}
133+
}
134+
116135
throw new HibernateException( "Unrecognized discriminator value: " + value );
117136
}
118137

0 commit comments

Comments
 (0)