HHH-18399 Avoid collecting duplicate attribute for to-one inverse table

This commit is contained in:
Marco Belladelli 2024-08-06 15:20:20 +02:00
parent 1ab7493e73
commit 5550c20120
1 changed files with 6 additions and 2 deletions

View File

@ -3584,6 +3584,8 @@ public abstract class AbstractEntityPersister
final TableMappingBuilder tableMappingBuilder;
final TableMappingBuilder existing = tableBuilderMap.get( tableExpression );
final boolean inverseTable = isInverseTable( relativePosition );
if ( existing == null ) {
final Consumer<SelectableConsumer> selectableConsumerConsumer = tableKeyColumnVisitationSupplier.get();
final List<EntityTableMapping.KeyColumn> keyColumns = new ArrayList<>();
@ -3614,7 +3616,7 @@ public abstract class AbstractEntityPersister
relativePosition,
new EntityTableMapping.KeyMapping( keyColumns, identifierMapping ),
!isIdentifierTable && isNullableTable( relativePosition ),
isInverseTable( relativePosition ),
inverseTable,
isIdentifierTable,
insertExpectations[ relativePosition ],
customInsertSql,
@ -3636,7 +3638,9 @@ public abstract class AbstractEntityPersister
tableMappingBuilder = existing;
}
collectAttributesIndexesForTable( relativePosition, tableMappingBuilder.attributeIndexes::add );
if ( !inverseTable ) {
collectAttributesIndexesForTable( relativePosition, tableMappingBuilder.attributeIndexes::add );
}
} );
final EntityTableMapping[] list = new EntityTableMapping[tableBuilderMap.size()];