1111import org .hibernate .engine .FetchTiming ;
1212import org .hibernate .engine .spi .SessionFactoryImplementor ;
1313import org .hibernate .engine .spi .SharedSessionContractImplementor ;
14- import org .hibernate .internal .util .collections .CollectionHelper ;
15- import org .hibernate .metamodel .mapping .AttributeMapping ;
1614import org .hibernate .metamodel .mapping .CompositeIdentifierMapping ;
1715import org .hibernate .metamodel .mapping .EmbeddableMappingType ;
18- import org .hibernate .metamodel .mapping .EntityIdentifierMapping ;
1916import org .hibernate .metamodel .mapping .EntityMappingType ;
20- import org .hibernate .metamodel .mapping .ForeignKeyDescriptor ;
2117import org .hibernate .metamodel .mapping .ModelPart ;
22- import org .hibernate .metamodel .mapping .SelectableMappings ;
2318import org .hibernate .metamodel .mapping .internal .MappingModelCreationProcess ;
2419import org .hibernate .metamodel .mapping .internal .ToOneAttributeMapping ;
2520import org .hibernate .metamodel .model .domain .NavigableRole ;
3025import org .hibernate .sql .ast .spi .SqlAliasBase ;
3126import org .hibernate .sql .ast .spi .SqlAstCreationState ;
3227import org .hibernate .sql .ast .tree .expression .ColumnReference ;
33- import org .hibernate .sql .ast .tree .expression .Expression ;
3428import org .hibernate .sql .ast .tree .expression .SqlTuple ;
3529import org .hibernate .sql .ast .tree .from .StandardVirtualTableGroup ;
3630import org .hibernate .sql .ast .tree .from .TableGroup ;
3731import org .hibernate .sql .ast .tree .from .TableGroupJoin ;
38- import org .hibernate .sql .ast .tree .from .TableReference ;
3932import org .hibernate .sql .ast .tree .predicate .Predicate ;
4033import org .hibernate .sql .results .graph .DomainResult ;
4134import org .hibernate .sql .results .graph .DomainResultCreationState ;
4841
4942import org .checkerframework .checker .nullness .qual .Nullable ;
5043
44+ import static org .hibernate .internal .util .collections .CollectionHelper .arrayList ;
45+
5146/**
5247 * Base implementation for composite identifier mappings
5348 *
@@ -66,7 +61,9 @@ public AbstractCompositeIdentifierMapping(
6661 EntityMappingType entityMapping ,
6762 String tableExpression ,
6863 MappingModelCreationProcess creationProcess ) {
69- this .navigableRole = entityMapping .getNavigableRole ().appendContainer ( EntityIdentifierMapping .ID_ROLE_NAME );
64+ this .navigableRole =
65+ entityMapping .getNavigableRole ()
66+ .appendContainer ( ID_ROLE_NAME );
7067 this .entityMapping = entityMapping ;
7168 this .tableExpression = tableExpression ;
7269 this .sessionFactory = creationProcess .getCreationContext ().getSessionFactory ();
@@ -135,8 +132,8 @@ public TableGroupJoin createTableGroupJoin(
135132 boolean fetched ,
136133 boolean addsPredicate ,
137134 SqlAstCreationState creationState ) {
138- final SqlAstJoinType joinType = determineSqlJoinType ( lhs , requestedJoinType , fetched );
139- final TableGroup tableGroup = createRootTableGroupJoin (
135+ final var joinType = determineSqlJoinType ( lhs , requestedJoinType , fetched );
136+ final var tableGroup = createRootTableGroupJoin (
140137 navigablePath ,
141138 lhs ,
142139 explicitSourceAlias ,
@@ -146,7 +143,6 @@ public TableGroupJoin createTableGroupJoin(
146143 null ,
147144 creationState
148145 );
149-
150146 return new TableGroupJoin ( navigablePath , joinType , tableGroup , null );
151147 }
152148
@@ -184,26 +180,24 @@ public <X, Y> int forEachJdbcValue(
184180 JdbcValuesBiConsumer <X , Y > valuesConsumer ,
185181 SharedSessionContractImplementor session ) {
186182 int span = 0 ;
187- final EmbeddableMappingType embeddableTypeDescriptor = getEmbeddableTypeDescriptor ();
183+ final var embeddableTypeDescriptor = getEmbeddableTypeDescriptor ();
188184 final int size = embeddableTypeDescriptor .getNumberOfAttributeMappings ();
189185 if ( value == null ) {
190186 for ( int i = 0 ; i < size ; i ++ ) {
191- final AttributeMapping attributeMapping = embeddableTypeDescriptor .getAttributeMapping ( i );
187+ final var attributeMapping = embeddableTypeDescriptor .getAttributeMapping ( i );
192188 span += attributeMapping .forEachJdbcValue ( null , span + offset , x , y , valuesConsumer , session );
193189 }
194190 }
195191 else {
196192 for ( int i = 0 ; i < size ; i ++ ) {
197- final AttributeMapping attributeMapping = embeddableTypeDescriptor .getAttributeMapping ( i );
198- final Object o = embeddableTypeDescriptor .getValue ( value , i );
193+ final var attributeMapping = embeddableTypeDescriptor .getAttributeMapping ( i );
194+ final Object object = embeddableTypeDescriptor .getValue ( value , i );
199195 if ( attributeMapping instanceof ToOneAttributeMapping toOneAttributeMapping ) {
200- final ForeignKeyDescriptor fkDescriptor = toOneAttributeMapping .getForeignKeyDescriptor ();
201- final Object identifier = fkDescriptor .getAssociationKeyFromSide (
202- o ,
203- toOneAttributeMapping .getSideNature ().inverse (),
204- session
205- );
206- span += fkDescriptor .forEachJdbcValue (
196+ final var foreignKeyDescriptor = toOneAttributeMapping .getForeignKeyDescriptor ();
197+ final var inverse = toOneAttributeMapping .getSideNature ().inverse ();
198+ final Object identifier =
199+ foreignKeyDescriptor .getAssociationKeyFromSide ( object , inverse , session );
200+ span += foreignKeyDescriptor .forEachJdbcValue (
207201 identifier ,
208202 span + offset ,
209203 x ,
@@ -213,7 +207,7 @@ public <X, Y> int forEachJdbcValue(
213207 );
214208 }
215209 else {
216- span += attributeMapping .forEachJdbcValue ( o , span + offset , x , y , valuesConsumer , session );
210+ span += attributeMapping .forEachJdbcValue ( object , span + offset , x , y , valuesConsumer , session );
217211 }
218212 }
219213 }
@@ -226,22 +220,22 @@ public SqlTuple toSqlExpression(
226220 Clause clause ,
227221 SqmToSqlAstConverter walker ,
228222 SqlAstCreationState sqlAstCreationState ) {
229- final SelectableMappings selectableMappings = getEmbeddableTypeDescriptor ();
230- final List <ColumnReference > columnReferences = CollectionHelper .arrayList ( selectableMappings .getJdbcTypeCount () );
231- final NavigablePath navigablePath = tableGroup .getNavigablePath ().append ( getNavigableRole ().getNavigableName () );
232- final TableReference defaultTableReference = tableGroup .resolveTableReference ( navigablePath , getContainingTableExpression () );
223+ final List <ColumnReference > columnReferences = arrayList ( getEmbeddableTypeDescriptor ().getJdbcTypeCount () );
224+ final var navigablePath = tableGroup .getNavigablePath ().append ( getNavigableRole ().getNavigableName () );
225+ final var defaultTableReference = tableGroup .resolveTableReference ( navigablePath , getContainingTableExpression () );
233226 getEmbeddableTypeDescriptor ().forEachSelectable (
234227 (columnIndex , selection ) -> {
235- final TableReference tableReference = getContainingTableExpression ().equals ( selection .getContainingTableExpression () )
236- ? defaultTableReference
237- : tableGroup .resolveTableReference ( navigablePath , selection .getContainingTableExpression () );
238- final Expression columnReference = sqlAstCreationState .getSqlExpressionResolver ()
239- .resolveSqlExpression ( tableReference , selection );
240-
228+ final String containingTableExpression = selection .getContainingTableExpression ();
229+ final var tableReference =
230+ getContainingTableExpression ().equals ( containingTableExpression )
231+ ? defaultTableReference
232+ : tableGroup .resolveTableReference ( navigablePath , containingTableExpression );
233+ final var columnReference =
234+ sqlAstCreationState .getSqlExpressionResolver ()
235+ .resolveSqlExpression ( tableReference , selection );
241236 columnReferences .add ( (ColumnReference ) columnReference );
242237 }
243238 );
244-
245239 return new SqlTuple ( columnReferences , this );
246240 }
247241
0 commit comments