Skip to content

Commit 9a9fb43

Browse files
committed
HHH-9302 - SQLGrammarException with @DiscriminatorColumn in an inheritance hierarchy
1 parent 331383c commit 9a9fb43

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

hibernate-core/src/main/java/org/hibernate/persister/entity/JoinedSubclassEntityPersister.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -887,7 +887,6 @@ private static String[][] reverse(String[][] objects, int n) {
887887
return temp;
888888
}
889889

890-
891890
public String fromTableFragment(String alias) {
892891
return getTableName() + ' ' + alias;
893892
}
@@ -902,11 +901,24 @@ public void addDiscriminatorToSelect(SelectFragment select, String name, String
902901
select.setExtraSelectList( discriminatorFragment( name ), getDiscriminatorAlias() );
903902
}
904903
else {
904+
if ( getEntityMetamodel().getSuperclass() != null ) {
905+
name = generateTableAlias( name, getRootHierarchyClassTableIndex() );
906+
}
905907
select.addColumn( name, explicitDiscriminatorColumnName, discriminatorAlias );
906908
}
907909
}
908910
}
909911

912+
private int getRootHierarchyClassTableIndex() {
913+
final String rootHierarchyClassTableName = naturalOrderTableNames[0];
914+
for ( int i = 0; i < subclassTableNameClosure.length; i++ ) {
915+
if ( subclassTableNameClosure[i].equals( rootHierarchyClassTableName ) ) {
916+
return i;
917+
}
918+
}
919+
return 0;
920+
}
921+
910922
private CaseFragment discriminatorFragment(String alias) {
911923
CaseFragment cases = getFactory().getDialect().createCaseFragment();
912924

0 commit comments

Comments
 (0)