4343import org .hibernate .dialect .lock .LockingStrategy ;
4444import org .hibernate .engine .FetchTiming ;
4545import org .hibernate .engine .OptimisticLockStyle ;
46- import org .hibernate .engine .internal .CacheHelper ;
4746import org .hibernate .engine .internal .ImmutableEntityEntryFactory ;
4847import org .hibernate .engine .internal .MutableEntityEntryFactory ;
4948import org .hibernate .engine .profile .internal .FetchProfileAffectee ;
6867import org .hibernate .generator .internal .VersionGeneration ;
6968import org .hibernate .generator .values .GeneratedValues ;
7069import org .hibernate .generator .values .GeneratedValuesMutationDelegate ;
71- import org .hibernate .generator .values .internal .GeneratedValuesHelper ;
7270import org .hibernate .id .BulkInsertionCapableIdentifierGenerator ;
7371import org .hibernate .id .IdentifierGenerator ;
7472import org .hibernate .id .OptimizableGenerator ;
257255import static java .util .Collections .emptySet ;
258256import static java .util .Collections .unmodifiableList ;
259257import static org .hibernate .boot .model .internal .SoftDeleteHelper .resolveSoftDeleteMapping ;
258+ import static org .hibernate .engine .internal .CacheHelper .fromSharedCache ;
260259import static org .hibernate .engine .internal .ManagedTypeHelper .asPersistentAttributeInterceptable ;
261260import static org .hibernate .engine .internal .ManagedTypeHelper .isPersistentAttributeInterceptable ;
262261import static org .hibernate .engine .internal .ManagedTypeHelper .processIfPersistentAttributeInterceptable ;
263262import static org .hibernate .generator .EventType .FORCE_INCREMENT ;
264263import static org .hibernate .generator .EventType .INSERT ;
265264import static org .hibernate .generator .EventType .UPDATE ;
265+ import static org .hibernate .generator .values .internal .GeneratedValuesHelper .getGeneratedValuesDelegate ;
266266import static org .hibernate .internal .util .ReflectHelper .isAbstractClass ;
267267import static org .hibernate .internal .util .StringHelper .isEmpty ;
268268import static org .hibernate .internal .util .StringHelper .qualify ;
284284import static org .hibernate .internal .util .collections .CollectionHelper .toSmallList ;
285285import static org .hibernate .loader .ast .internal .MultiKeyLoadHelper .supportsSqlArrayType ;
286286import static org .hibernate .metamodel .RepresentationMode .POJO ;
287+ import static org .hibernate .metamodel .mapping .internal .GeneratedValuesProcessor .getGeneratedAttributes ;
287288import static org .hibernate .metamodel .mapping .internal .MappingModelCreationHelper .buildBasicAttributeMapping ;
288289import static org .hibernate .metamodel .mapping .internal .MappingModelCreationHelper .buildEncapsulatedCompositeIdentifierMapping ;
289290import static org .hibernate .metamodel .mapping .internal .MappingModelCreationHelper .buildNonEncapsulatedCompositeIdentifierMapping ;
@@ -667,25 +668,25 @@ else if ( selectable instanceof Column column ) {
667668 names .add ( prop .getName () );
668669 types .add ( prop .getType () );
669670
670- final String [] cols = new String [ prop .getColumnSpan () ];
671- final String [] readers = new String [ prop .getColumnSpan () ];
672- final String [] readerTemplates = new String [ prop .getColumnSpan () ];
673- final String [] forms = new String [ prop .getColumnSpan () ];
671+ final int columnSpan = prop .getColumnSpan ();
672+ final String [] columnNames = new String [columnSpan ];
673+ final String [] readers = new String [columnSpan ];
674+ final String [] readerTemplates = new String [columnSpan ];
675+ final String [] formulaTemplates = new String [columnSpan ];
674676
675677 final var selectables = prop .getSelectables ();
676678 for ( int i = 0 ; i < selectables .size (); i ++ ) {
677679 final var selectable = selectables .get (i );
678680 if ( selectable instanceof Formula ) {
679- final String template = selectable .getTemplate ( dialect , typeConfiguration );
680- forms [i ] = template ;
681+ formulaTemplates [i ] = selectable .getTemplate ( dialect , typeConfiguration );
681682 final String formulaAlias = selectable .getAlias ( dialect );
682683 if ( prop .isSelectable () && !formulaAliases .contains ( formulaAlias ) ) {
683684 formulaAliases .add ( formulaAlias );
684685 }
685686 }
686687 else if ( selectable instanceof Column column ) {
687- final String colName = column .getQuotedName (dialect );
688- cols [i ] = colName ;
688+ final String quotedColumnName = column .getQuotedName ( dialect );
689+ columnNames [i ] = quotedColumnName ;
689690 final String columnAlias = selectable .getAlias ( dialect , prop .getValue ().getTable () );
690691 if ( prop .isSelectable () && !aliases .contains ( columnAlias ) ) {
691692 aliases .add ( columnAlias );
@@ -695,14 +696,14 @@ else if ( selectable instanceof Column column ) {
695696 if ( thisClassProperties .contains ( prop )
696697 ? persistentClass .hasSubclasses ()
697698 : persistentClass .isDefinedOnMultipleSubclasses ( column ) ) {
698- sharedColumnNames .add ( colName );
699+ sharedColumnNames .add ( quotedColumnName );
699700 }
700701 }
701702 }
702- propColumns .add ( cols );
703+ propColumns .add ( columnNames );
703704 propColumnReaders .add ( readers );
704705 propColumnReaderTemplates .add ( readerTemplates );
705- templates .add ( forms );
706+ templates .add ( formulaTemplates );
706707
707708 joinedFetchesList .add ( prop .getValue ().getFetchMode () );
708709 }
@@ -1470,7 +1471,7 @@ && isLazyPropertiesCacheable() ) {
14701471 session .getFactory (),
14711472 session .getTenantIdentifier ()
14721473 );
1473- final Object structuredEntry = CacheHelper . fromSharedCache ( session , cacheKey , this , cacheAccess );
1474+ final Object structuredEntry = fromSharedCache ( session , cacheKey , this , cacheAccess );
14741475 if ( structuredEntry != null ) {
14751476 final var cacheEntry = (CacheEntry ) getCacheEntryStructure ().destructure ( structuredEntry , factory );
14761477 final Object initializedValue = initializeLazyPropertiesFromCache ( fieldName , entity , session , entry , cacheEntry );
@@ -3131,24 +3132,25 @@ protected boolean shouldInnerJoinSubclassTable(int subclassTableNumber, Set<Stri
31313132 return !isInverseTable ( subclassTableNumber )
31323133 && !isNullableTable ( subclassTableNumber );
31333134 }
3134-
3135- // otherwise we have a subclass table and need to look a little deeper...
3136-
3137- // IMPL NOTE: By default, 'includeSubclasses' indicates that all subclasses should be joined and that each
3138- // subclass ought to be joined by outer join. However, 'TREAT AS' always requires that an inner join be used,
3139- // so we give 'TREAT AS' higher precedence...
3140-
3141- return isSubclassTableIndicatedByTreatAsDeclarations ( subclassTableNumber , treatAsDeclarations );
3135+ else {
3136+ // otherwise we have a subclass table and need to look a little deeper...
3137+ // IMPL NOTE: By default, 'includeSubclasses' indicates that all subclasses should be joined and that
3138+ // each subclass ought to be joined by outer join. However, 'TREAT AS' always requires that an inner
3139+ // join be used, so we give 'TREAT AS' higher precedence.
3140+ return isSubclassTableIndicatedByTreatAsDeclarations ( subclassTableNumber , treatAsDeclarations );
3141+ }
31423142 }
31433143
31443144 protected boolean isSubclassTableIndicatedByTreatAsDeclarations (int subclassTableNumber , Set <String > treatAsDeclarations ) {
31453145 return false ;
31463146 }
31473147
31483148 /**
3149- * Post-construct is a callback for AbstractEntityPersister subclasses to call after they are all done with their
3150- * constructor processing. It allows AbstractEntityPersister to extend its construction after all subclass-specific
3151- * details have been handled.
3149+ * Post-construct is a callback for {@code AbstractEntityPersister}
3150+ * subclasses to call after they are all done with their constructor
3151+ * processing. It allows {@code AbstractEntityPersister} to extend
3152+ * its construction after subclass-specific details have all been
3153+ * taken care of.
31523154 *
31533155 * @param mapping The mapping
31543156 *
@@ -3174,11 +3176,11 @@ private void doLateInit() {
31743176
31753177 final List <AttributeMapping > insertGeneratedAttributes =
31763178 hasInsertGeneratedProperties ()
3177- ? GeneratedValuesProcessor . getGeneratedAttributes ( this , INSERT )
3179+ ? getGeneratedAttributes ( this , INSERT )
31783180 : emptyList ();
31793181 final List <AttributeMapping > updateGeneratedAttributes =
31803182 hasUpdateGeneratedProperties ()
3181- ? GeneratedValuesProcessor . getGeneratedAttributes ( this , UPDATE )
3183+ ? getGeneratedAttributes ( this , UPDATE )
31823184 : emptyList ();
31833185
31843186 insertGeneratedProperties = initInsertGeneratedProperties ( insertGeneratedAttributes );
@@ -3192,10 +3194,12 @@ private void doLateInit() {
31923194 }
31933195
31943196 if ( hasInsertGeneratedProperties () ) {
3195- insertGeneratedValuesProcessor = createGeneratedValuesProcessor ( INSERT , insertGeneratedAttributes );
3197+ insertGeneratedValuesProcessor =
3198+ createGeneratedValuesProcessor ( INSERT , insertGeneratedAttributes );
31963199 }
31973200 if ( hasUpdateGeneratedProperties () ) {
3198- updateGeneratedValuesProcessor = createGeneratedValuesProcessor ( UPDATE , updateGeneratedAttributes );
3201+ updateGeneratedValuesProcessor =
3202+ createGeneratedValuesProcessor ( UPDATE , updateGeneratedAttributes );
31993203 }
32003204
32013205 insertCoordinator = buildInsertCoordinator ();
@@ -3212,11 +3216,11 @@ protected GeneratedValuesMutationDelegate createInsertDelegate() {
32123216 final var generator = (OnExecutionGenerator ) getGenerator ();
32133217 return generator .getGeneratedIdentifierDelegate ( this );
32143218 }
3215- return GeneratedValuesHelper . getGeneratedValuesDelegate ( this , INSERT );
3219+ return getGeneratedValuesDelegate ( this , INSERT );
32163220 }
32173221
32183222 protected GeneratedValuesMutationDelegate createUpdateDelegate () {
3219- return GeneratedValuesHelper . getGeneratedValuesDelegate ( this , UPDATE );
3223+ return getGeneratedValuesDelegate ( this , UPDATE );
32203224 }
32213225
32223226 private static class TableMappingBuilder {
@@ -3378,12 +3382,12 @@ protected EntityTableMapping[] buildTableMappings() {
33783382 }
33793383 } );
33803384
3381- final EntityTableMapping [] list = new EntityTableMapping [tableBuilderMap .size ()];
3385+ final var entityTableMappings = new EntityTableMapping [tableBuilderMap .size ()];
33823386 int i = 0 ;
3383- for ( Map . Entry < String , TableMappingBuilder > entry : tableBuilderMap .entrySet () ) {
3384- list [i ++] = entry .getValue ().build ();
3387+ for ( var entry : tableBuilderMap .entrySet () ) {
3388+ entityTableMappings [i ++] = entry .getValue ().build ();
33853389 }
3386- return list ;
3390+ return entityTableMappings ;
33873391 }
33883392
33893393 /**
@@ -3427,8 +3431,7 @@ protected InsertCoordinator buildInsertCoordinator() {
34273431 protected UpdateCoordinator buildUpdateCoordinator () {
34283432 // we only have updates to issue for entities with one or more singular attributes
34293433 for ( int i = 0 ; i < attributeMappings .size (); i ++ ) {
3430- final AttributeMapping attributeMapping = attributeMappings .get ( i );
3431- if ( attributeMapping instanceof SingularAttributeMapping ) {
3434+ if ( attributeMappings .get ( i ) instanceof SingularAttributeMapping ) {
34323435 return new UpdateCoordinatorStandard ( this , factory );
34333436 }
34343437 }
@@ -3439,8 +3442,7 @@ protected UpdateCoordinator buildUpdateCoordinator() {
34393442 protected UpdateCoordinator buildMergeCoordinator () {
34403443 // we only have updates to issue for entities with one or more singular attributes
34413444 for ( int i = 0 ; i < attributeMappings .size (); i ++ ) {
3442- final AttributeMapping attributeMapping = attributeMappings .get ( i );
3443- if ( attributeMapping instanceof SingularAttributeMapping ) {
3445+ if ( attributeMappings .get ( i ) instanceof SingularAttributeMapping ) {
34443446 return new MergeCoordinator ( this , factory );
34453447 }
34463448 }
@@ -3449,12 +3451,9 @@ protected UpdateCoordinator buildMergeCoordinator() {
34493451 }
34503452
34513453 protected DeleteCoordinator buildDeleteCoordinator () {
3452- if ( softDeleteMapping == null ) {
3453- return new DeleteCoordinatorStandard ( this , factory );
3454- }
3455- else {
3456- return new DeleteCoordinatorSoft ( this , factory );
3457- }
3454+ return softDeleteMapping == null
3455+ ? new DeleteCoordinatorStandard ( this , factory )
3456+ : new DeleteCoordinatorSoft ( this , factory );
34583457 }
34593458
34603459 @ Override
@@ -3523,7 +3522,7 @@ protected SingleIdEntityLoader<?> determineLoaderToUse(SharedSessionContractImpl
35233522 return getSingleIdLoader ();
35243523 }
35253524
3526- final LoadQueryInfluencers influencers = session .getLoadQueryInfluencers ();
3525+ final var influencers = session .getLoadQueryInfluencers ();
35273526 if ( isAffectedByInfluencers ( influencers , true ) ) {
35283527 return buildSingleIdEntityLoader ( influencers , lockOptions );
35293528 }
@@ -3877,15 +3876,14 @@ public Boolean isTransient(Object entity, SharedSessionContractImplementor sessi
38773876 if ( persistenceContext .hasLoadContext ()
38783877 && !persistenceContext .getLoadContexts ().isLoadingFinished () ) {
38793878 // check if we're currently loading this entity instance, the version
3880- // will be null but the entity cannot be considered transient
3879+ // will be null, but the entity cannot be considered transient
38813880 final var holder = persistenceContext .getEntityHolder ( new EntityKey ( id , this ) );
38823881 if ( holder != null && holder .isEventuallyInitialized () && holder .getEntity () == entity ) {
38833882 return false ;
38843883 }
38853884 }
38863885 }
3887- final var identifierGenerator = getGenerator ();
3888- if ( identifierGenerator != null ) {
3886+ if ( getGenerator () != null ) {
38893887 final Boolean unsaved = identifierMapping .getUnsavedStrategy ().isUnsaved ( id );
38903888 if ( unsaved != null && !unsaved ) {
38913889 throw new PropertyValueException (
@@ -3909,10 +3907,10 @@ public Boolean isTransient(Object entity, SharedSessionContractImplementor sessi
39093907
39103908 // check to see if it is in the second-level cache
39113909 if ( session .getCacheMode ().isGetEnabled () && canReadFromCache () ) {
3912- final var cache = getCacheAccessStrategy ();
39133910 final Object cacheKey =
3914- cache .generateCacheKey ( id , this , session .getFactory (), session .getTenantIdentifier () );
3915- final Object cacheEntry = CacheHelper .fromSharedCache ( session , cacheKey , this , getCacheAccessStrategy () );
3911+ getCacheAccessStrategy ()
3912+ .generateCacheKey ( id , this , session .getFactory (), session .getTenantIdentifier () );
3913+ final Object cacheEntry = fromSharedCache ( session , cacheKey , this , getCacheAccessStrategy () );
39163914 if ( cacheEntry != null ) {
39173915 return false ;
39183916 }
0 commit comments