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 d44f6ba630
commit 0755134224
1 changed files with 6 additions and 2 deletions

View File

@ -3547,6 +3547,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<>();
@ -3577,7 +3579,7 @@ public abstract class AbstractEntityPersister
relativePosition,
new EntityTableMapping.KeyMapping( keyColumns, identifierMapping ),
!isIdentifierTable && isNullableTable( relativePosition ),
isInverseTable( relativePosition ),
inverseTable,
isIdentifierTable,
insertExpectations[ relativePosition ],
customInsertSql,
@ -3599,7 +3601,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()];