@@ -335,6 +335,7 @@ public abstract class AbstractSqlAstTranslator<T extends JdbcOperation> implemen
335335 private JdbcParameter offsetParameter ;
336336 private JdbcParameter limitParameter ;
337337 private ForUpdateClause forUpdate ;
338+ private boolean wrappingStarted ;
338339
339340 protected AbstractSqlAstTranslator (SessionFactoryImplementor sessionFactory , Statement statement ) {
340341 this .sessionFactory = sessionFactory ;
@@ -7152,15 +7153,16 @@ protected final void renderParameterAsParameter(JdbcParameter jdbcParameter) {
71527153
71537154 protected void renderWrappedParameter (JdbcParameter jdbcParameter ) {
71547155 clauseStack .push ( Clause .SELECT );
7155-
7156+ this . wrappingStarted = true ;
71567157 try {
71577158 appendSql ( "(select " );
7158- visitParameterAsParameter ( jdbcParameter );
7159+ renderCasted ( jdbcParameter );
71597160 appendSql ( getFromDualForSelectOnly () );
71607161 appendSql ( ')' );
71617162 }
71627163 finally {
71637164 clauseStack .pop ();
7165+ this .wrappingStarted = false ;
71647166 }
71657167 }
71667168
@@ -7179,7 +7181,7 @@ protected void renderParameterAsParameter(int position, JdbcParameter jdbcParame
71797181 @ Override
71807182 public void render (SqlAstNode sqlAstNode , SqlAstNodeRenderingMode renderingMode ) {
71817183 SqlAstNodeRenderingMode original = this .parameterRenderingMode ;
7182- if ( original != SqlAstNodeRenderingMode .INLINE_ALL_PARAMETERS && original != SqlAstNodeRenderingMode .WRAP_ALL_PARAMETERS ) {
7184+ if ( original != SqlAstNodeRenderingMode .INLINE_ALL_PARAMETERS && ( original != SqlAstNodeRenderingMode .WRAP_ALL_PARAMETERS || wrappingStarted ) ) {
71837185 this .parameterRenderingMode = renderingMode ;
71847186 }
71857187 try {
@@ -7192,7 +7194,7 @@ public void render(SqlAstNode sqlAstNode, SqlAstNodeRenderingMode renderingMode)
71927194
71937195 protected void withParameterRenderingMode (SqlAstNodeRenderingMode renderingMode , Runnable runnable ) {
71947196 SqlAstNodeRenderingMode original = this .parameterRenderingMode ;
7195- if ( original != SqlAstNodeRenderingMode .INLINE_ALL_PARAMETERS && original != SqlAstNodeRenderingMode .WRAP_ALL_PARAMETERS ) {
7197+ if ( original != SqlAstNodeRenderingMode .INLINE_ALL_PARAMETERS && ( original != SqlAstNodeRenderingMode .WRAP_ALL_PARAMETERS || wrappingStarted ) ) {
71967198 this .parameterRenderingMode = renderingMode ;
71977199 }
71987200 try {
@@ -7376,7 +7378,7 @@ protected void visitAnsiCaseSearchedExpression(
73767378 appendSql ( "case" );
73777379 final SqlAstNodeRenderingMode original = this .parameterRenderingMode ;
73787380 for ( CaseSearchedExpression .WhenFragment whenFragment : caseSearchedExpression .getWhenFragments () ) {
7379- if ( original != SqlAstNodeRenderingMode .INLINE_ALL_PARAMETERS && original != SqlAstNodeRenderingMode .WRAP_ALL_PARAMETERS ) {
7381+ if ( original != SqlAstNodeRenderingMode .INLINE_ALL_PARAMETERS && ( original != SqlAstNodeRenderingMode .WRAP_ALL_PARAMETERS || wrappingStarted ) ) {
73807382 this .parameterRenderingMode = SqlAstNodeRenderingMode .DEFAULT ;
73817383 }
73827384 appendSql ( " when " );
@@ -7404,7 +7406,7 @@ protected void visitDecodeCaseSearchedExpression(CaseSearchedExpression caseSear
74047406 for ( int i = 0 ; i < caseNumber ; i ++ ) {
74057407 final CaseSearchedExpression .WhenFragment whenFragment = whenFragments .get ( i );
74067408 Predicate predicate = whenFragment .getPredicate ();
7407- if ( original != SqlAstNodeRenderingMode .INLINE_ALL_PARAMETERS && original != SqlAstNodeRenderingMode .WRAP_ALL_PARAMETERS ) {
7409+ if ( original != SqlAstNodeRenderingMode .INLINE_ALL_PARAMETERS && ( original != SqlAstNodeRenderingMode .WRAP_ALL_PARAMETERS || wrappingStarted ) ) {
74087410 this .parameterRenderingMode = SqlAstNodeRenderingMode .DEFAULT ;
74097411 }
74107412 if ( i != 0 ) {
@@ -7451,12 +7453,12 @@ protected void visitAnsiCaseSimpleExpression(
74517453 Consumer <Expression > resultRenderer ) {
74527454 appendSql ( "case " );
74537455 final SqlAstNodeRenderingMode original = this .parameterRenderingMode ;
7454- if ( original != SqlAstNodeRenderingMode .INLINE_ALL_PARAMETERS && original != SqlAstNodeRenderingMode .WRAP_ALL_PARAMETERS ) {
7456+ if ( original != SqlAstNodeRenderingMode .INLINE_ALL_PARAMETERS && ( original != SqlAstNodeRenderingMode .WRAP_ALL_PARAMETERS || wrappingStarted ) ) {
74557457 this .parameterRenderingMode = SqlAstNodeRenderingMode .DEFAULT ;
74567458 }
74577459 caseSimpleExpression .getFixture ().accept ( this );
74587460 for ( CaseSimpleExpression .WhenFragment whenFragment : caseSimpleExpression .getWhenFragments () ) {
7459- if ( original != SqlAstNodeRenderingMode .INLINE_ALL_PARAMETERS && original != SqlAstNodeRenderingMode .WRAP_ALL_PARAMETERS ) {
7461+ if ( original != SqlAstNodeRenderingMode .INLINE_ALL_PARAMETERS && ( original != SqlAstNodeRenderingMode .WRAP_ALL_PARAMETERS || wrappingStarted ) ) {
74607462 this .parameterRenderingMode = SqlAstNodeRenderingMode .DEFAULT ;
74617463 }
74627464 appendSql ( " when " );
0 commit comments