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