Skip to content

Commit 9442f4d

Browse files
committed
HHH-12997,HHH-9897 throw meaningful error for @JoinFomula with @onetomany
1 parent 8a21303 commit 9442f4d

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

hibernate-core/src/main/java/org/hibernate/persister/collection/AbstractCollectionPersister.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -322,10 +322,15 @@ public AbstractCollectionPersister(
322322
keyColumnNames = new String[keySpan];
323323
keyColumnAliases = new String[keySpan];
324324
int k = 0;
325-
for ( Column column: collectionBootDescriptor.getKey().getColumns() ) {
325+
for ( Selectable selectable: collectionBootDescriptor.getKey().getSelectables() ) {
326326
// NativeSQL: collect key column and auto-aliases
327-
keyColumnNames[k] = column.getQuotedName( dialect );
328-
keyColumnAliases[k] = column.getAlias( dialect, table );
327+
keyColumnAliases[k] = selectable.getAlias( dialect, table );
328+
if ( selectable instanceof Column column ) {
329+
keyColumnNames[k] = column.getQuotedName( dialect );
330+
}
331+
else {
332+
throw new MappingException("Collection keys may not contain formulas: " + navigableRole.getFullPath() );
333+
}
329334
k++;
330335
}
331336

@@ -374,7 +379,7 @@ public AbstractCollectionPersister(
374379
elementFormulas[j] = form.getFormula();
375380
}
376381
else {
377-
Column col = (Column) selectable;
382+
final Column col = (Column) selectable;
378383
elementColumnNames[j] = col.getQuotedName( dialect );
379384
elementColumnWriters[j] = col.getWriteExpr( elementBootDescriptor.getSelectableType( factory, j ), dialect );
380385
elementColumnReaders[j] = col.getReadExpr( dialect );

0 commit comments

Comments
 (0)