@@ -221,12 +221,11 @@ public QuerySqmImpl(
221221
222222 // Parameters might be created through HibernateCriteriaBuilder.value which we need to bind here
223223 for ( SqmParameter <?> sqmParameter : domainParameterXref .getParameterResolutions ().getSqmParameters () ) {
224- if ( sqmParameter instanceof SqmJpaCriteriaParameterWrapper <?> ) {
225- bindCriteriaParameter (( SqmJpaCriteriaParameterWrapper <?>) sqmParameter );
224+ if ( sqmParameter instanceof SqmJpaCriteriaParameterWrapper <?> wrapper ) {
225+ bindCriteriaParameter ( wrapper );
226226 }
227227 }
228- if ( sqm instanceof SqmSelectStatement <?> ) {
229- final SqmSelectStatement <R > selectStatement = (SqmSelectStatement <R >) sqm ;
228+ if ( sqm instanceof SqmSelectStatement <R > selectStatement ) {
230229 final SqmQueryPart <R > queryPart = selectStatement .getQueryPart ();
231230 // For criteria queries, we have to validate the fetch structure here
232231 queryPart .validateQueryStructureAndFetchOwners ();
@@ -464,13 +463,13 @@ public boolean isQueryPlanCacheable() {
464463
465464 private SelectQueryPlan <R > resolveSelectQueryPlan () {
466465 final QueryInterpretationCache .Key cacheKey = createInterpretationsKey ( this );
467- if ( cacheKey != null ) {
468- return getSession ().getFactory (). getQueryEngine (). getInterpretationCache ( )
469- . resolveSelectQueryPlan ( cacheKey , this :: buildSelectQueryPlan );
470- }
471- else {
472- return buildSelectQueryPlan ();
473- }
466+ return cacheKey != null
467+ ? interpretationCache ().resolveSelectQueryPlan ( cacheKey , this :: buildSelectQueryPlan )
468+ : buildSelectQueryPlan ( );
469+ }
470+
471+ private QueryInterpretationCache interpretationCache () {
472+ return getSessionFactory (). getQueryEngine (). getInterpretationCache ();
474473 }
475474
476475
@@ -525,8 +524,7 @@ private NonSelectQueryPlan resolveNonSelectQueryPlan() {
525524 NonSelectQueryPlan queryPlan = null ;
526525
527526 final QueryInterpretationCache .Key cacheKey = generateNonSelectKey ( this );
528- final QueryInterpretationCache interpretationCache =
529- getSessionFactory ().getQueryEngine ().getInterpretationCache ();
527+ final QueryInterpretationCache interpretationCache = interpretationCache ();
530528 if ( cacheKey != null ) {
531529 queryPlan = interpretationCache .getNonSelectQueryPlan ( cacheKey );
532530 }
@@ -544,19 +542,19 @@ private NonSelectQueryPlan resolveNonSelectQueryPlan() {
544542 private NonSelectQueryPlan buildNonSelectQueryPlan () {
545543 // to get here the SQM statement has already been validated to be
546544 // a non-select variety...
547- if ( getSqmStatement () instanceof SqmDeleteStatement <?> ) {
545+ final SqmStatement <R > sqmStatement = getSqmStatement ();
546+ if ( sqmStatement instanceof SqmDeleteStatement <?> ) {
548547 return buildDeleteQueryPlan ();
549548 }
550-
551- if ( getSqmStatement () instanceof SqmUpdateStatement <?> ) {
549+ else if ( sqmStatement instanceof SqmUpdateStatement <?> ) {
552550 return buildUpdateQueryPlan ();
553551 }
554-
555- if ( getSqmStatement () instanceof SqmInsertStatement <?> ) {
552+ else if ( sqmStatement instanceof SqmInsertStatement <?> ) {
556553 return buildInsertQueryPlan ();
557554 }
558-
559- throw new UnsupportedOperationException ( "Query#executeUpdate for Statements of type [" + getSqmStatement () + "] not supported" );
555+ else {
556+ throw new UnsupportedOperationException ( "Query#executeUpdate for Statements of type [" + sqmStatement + "] not supported" );
557+ }
560558 }
561559
562560 private NonSelectQueryPlan buildDeleteQueryPlan () {
@@ -569,8 +567,9 @@ private NonSelectQueryPlan buildDeleteQueryPlan() {
569567
570568 private NonSelectQueryPlan buildConcreteDeleteQueryPlan (SqmDeleteStatement <?> sqmDelete ) {
571569 final EntityDomainType <?> entityDomainType = sqmDelete .getTarget ().getModel ();
572- final String entityNameToDelete = entityDomainType .getHibernateEntityName ();
573- final EntityPersister persister = getSessionFactory ().getMappingMetamodel ().getEntityDescriptor ( entityNameToDelete );
570+ final EntityPersister persister =
571+ getSessionFactory ().getMappingMetamodel ()
572+ .getEntityDescriptor ( entityDomainType .getHibernateEntityName () );
574573 final SqmMultiTableMutationStrategy multiTableStrategy = persister .getSqmMultiTableMutationStrategy ();
575574 if ( multiTableStrategy != null ) {
576575 // NOTE : MultiTableDeleteQueryPlan and SqmMultiTableMutationStrategy already handle soft-deletes internally
@@ -591,11 +590,9 @@ private NonSelectQueryPlan buildAggregatedDeleteQueryPlan(SqmDeleteStatement<?>[
591590
592591 private NonSelectQueryPlan buildUpdateQueryPlan () {
593592 final SqmUpdateStatement <R > sqmUpdate = (SqmUpdateStatement <R >) getSqmStatement ();
594-
595- final String entityNameToUpdate = sqmUpdate .getTarget ().getModel ().getHibernateEntityName ();
596593 final EntityPersister persister =
597- getSessionFactory ().getMappingMetamodel (). getEntityDescriptor ( entityNameToUpdate );
598-
594+ getSessionFactory ().getMappingMetamodel ()
595+ . getEntityDescriptor ( sqmUpdate . getTarget (). getModel (). getHibernateEntityName () );
599596 final SqmMultiTableMutationStrategy multiTableStrategy = persister .getSqmMultiTableMutationStrategy ();
600597 return multiTableStrategy == null
601598 ? new SimpleUpdateQueryPlan ( sqmUpdate , domainParameterXref )
@@ -604,17 +601,16 @@ private NonSelectQueryPlan buildUpdateQueryPlan() {
604601
605602 private NonSelectQueryPlan buildInsertQueryPlan () {
606603 final SqmInsertStatement <R > sqmInsert = (SqmInsertStatement <R >) getSqmStatement ();
607-
608- final String entityNameToInsert = sqmInsert .getTarget ().getModel ().getHibernateEntityName ();
609604 final EntityPersister persister =
610- getSessionFactory ().getMappingMetamodel ().getEntityDescriptor ( entityNameToInsert );
605+ getSessionFactory ().getMappingMetamodel ()
606+ .getEntityDescriptor ( sqmInsert .getTarget ().getModel ().getHibernateEntityName () );
611607
612608 boolean useMultiTableInsert = persister .hasMultipleTables ();
613609 if ( !useMultiTableInsert && !isSimpleValuesInsert ( sqmInsert , persister ) ) {
614610 final Generator identifierGenerator = persister .getGenerator ();
615611 if ( identifierGenerator instanceof BulkInsertionCapableIdentifierGenerator
616- && identifierGenerator instanceof OptimizableGenerator ) {
617- final Optimizer optimizer = ( ( OptimizableGenerator ) identifierGenerator ) .getOptimizer ();
612+ && identifierGenerator instanceof OptimizableGenerator optimizableGenerator ) {
613+ final Optimizer optimizer = optimizableGenerator .getOptimizer ();
618614 if ( optimizer != null && optimizer .getIncrementSize () > 1 ) {
619615 useMultiTableInsert = !hasIdentifierAssigned ( sqmInsert , persister );
620616 }
@@ -627,15 +623,15 @@ private NonSelectQueryPlan buildInsertQueryPlan() {
627623 persister .getSqmMultiTableInsertStrategy ()
628624 );
629625 }
630- else if ( sqmInsert instanceof SqmInsertValuesStatement <?>
631- && ( ( SqmInsertValuesStatement < R >) sqmInsert ) .getValuesList ().size () != 1
626+ else if ( sqmInsert instanceof SqmInsertValuesStatement <R > insertValues
627+ && insertValues .getValuesList ().size () != 1
632628 && !getSessionFactory ().getJdbcServices ().getDialect ().supportsValuesListForInsert () ) {
633629 // Split insert-values queries if the dialect doesn't support values lists
634- final SqmInsertValuesStatement <R > insertValues = (SqmInsertValuesStatement <R >) sqmInsert ;
635630 final List <SqmValues > valuesList = insertValues .getValuesList ();
636631 final NonSelectQueryPlan [] planParts = new NonSelectQueryPlan [valuesList .size ()];
637632 for ( int i = 0 ; i < valuesList .size (); i ++ ) {
638- final SqmInsertValuesStatement <?> subInsert = insertValues .copyWithoutValues ( SqmCopyContext .simpleContext () );
633+ final SqmInsertValuesStatement <?> subInsert =
634+ insertValues .copyWithoutValues ( SqmCopyContext .simpleContext () );
639635 subInsert .values ( valuesList .get ( i ) );
640636 planParts [i ] = new SimpleInsertQueryPlan ( subInsert , domainParameterXref );
641637 }
@@ -652,13 +648,10 @@ protected boolean hasIdentifierAssigned(SqmInsertStatement<?> sqmInsert, EntityP
652648 ? identifierMapping .getAttributeName ()
653649 : EntityIdentifierMapping .ID_ROLE_NAME ;
654650 for ( SqmPath <?> insertionTargetPath : sqmInsert .getInsertionTargetPaths () ) {
655- final SqmPath <?> lhs = insertionTargetPath .getLhs ();
656- if ( !( lhs instanceof SqmRoot <?> ) ) {
657- continue ;
658- }
659- final SqmPathSource <?> referencedPathSource = insertionTargetPath .getReferencedPathSource ();
660- if ( referencedPathSource .getPathName ().equals ( partName ) ) {
661- return true ;
651+ if ( insertionTargetPath .getLhs () instanceof SqmRoot <?> ) {
652+ if ( insertionTargetPath .getReferencedPathSource ().getPathName ().equals ( partName ) ) {
653+ return true ;
654+ }
662655 }
663656 }
664657
0 commit comments