Skip to content

Commit 052552f

Browse files
committed
HHH-18515 Unrecognized discriminator value exception when running native query on entity with discriminator column
1 parent fbb1dd0 commit 052552f

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
@@ -11,7 +11,9 @@
1111
import org.hibernate.metamodel.model.domain.NavigableRole;
1212
import org.hibernate.metamodel.spi.MappingMetamodelImplementor;
1313
import org.hibernate.type.BasicType;
14+
import org.hibernate.type.descriptor.java.CharacterJavaType;
1415
import org.hibernate.type.descriptor.java.JavaType;
16+
import org.hibernate.type.descriptor.java.StringJavaType;
1517

1618
import java.util.List;
1719
import java.util.Map;
@@ -111,6 +113,23 @@ public DiscriminatorValueDetails getDetailsForDiscriminatorValue(Object value) {
111113
return notNullMatch;
112114
}
113115

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

0 commit comments

Comments
 (0)