@@ -334,6 +334,7 @@ public abstract class AbstractSqlAstTranslator<T extends JdbcOperation> implemen
334334 private JdbcParameter offsetParameter ;
335335 private JdbcParameter limitParameter ;
336336 private ForUpdateClause forUpdate ;
337+ private boolean wrappingStarted ;
337338
338339 protected AbstractSqlAstTranslator (SessionFactoryImplementor sessionFactory , Statement statement ) {
339340 this .sessionFactory = sessionFactory ;
@@ -7078,16 +7079,16 @@ protected final void renderParameterAsParameter(JdbcParameter jdbcParameter) {
70787079
70797080 protected void renderWrappedParameter (JdbcParameter jdbcParameter ) {
70807081 clauseStack .push ( Clause .SELECT );
7081-
7082+ this . wrappingStarted = true ;
70827083 try {
70837084 appendSql ( "(select " );
7084-
7085- render ( jdbcParameter , SqlAstNodeRenderingMode .DEFAULT );
7085+ renderCasted ( jdbcParameter );
70867086 appendSql ( getFromDualForSelectOnly () );
70877087 appendSql ( ')' );
70887088 }
70897089 finally {
70907090 clauseStack .pop ();
7091+ this .wrappingStarted = false ;
70917092 }
70927093 }
70937094
@@ -7106,7 +7107,7 @@ protected void renderParameterAsParameter(int position, JdbcParameter jdbcParame
71067107 @ Override
71077108 public void render (SqlAstNode sqlAstNode , SqlAstNodeRenderingMode renderingMode ) {
71087109 SqlAstNodeRenderingMode original = this .parameterRenderingMode ;
7109- if ( original != SqlAstNodeRenderingMode .INLINE_ALL_PARAMETERS && original != SqlAstNodeRenderingMode .WRAP_ALL_PARAMETERS ) {
7110+ if ( original != SqlAstNodeRenderingMode .INLINE_ALL_PARAMETERS && ( original != SqlAstNodeRenderingMode .WRAP_ALL_PARAMETERS || wrappingStarted ) ) {
71107111 this .parameterRenderingMode = renderingMode ;
71117112 }
71127113 try {
@@ -7119,7 +7120,7 @@ public void render(SqlAstNode sqlAstNode, SqlAstNodeRenderingMode renderingMode)
71197120
71207121 protected void withParameterRenderingMode (SqlAstNodeRenderingMode renderingMode , Runnable runnable ) {
71217122 SqlAstNodeRenderingMode original = this .parameterRenderingMode ;
7122- if ( original != SqlAstNodeRenderingMode .INLINE_ALL_PARAMETERS && original != SqlAstNodeRenderingMode .WRAP_ALL_PARAMETERS ) {
7123+ if ( original != SqlAstNodeRenderingMode .INLINE_ALL_PARAMETERS && ( original != SqlAstNodeRenderingMode .WRAP_ALL_PARAMETERS || wrappingStarted ) ) {
71237124 this .parameterRenderingMode = renderingMode ;
71247125 }
71257126 try {
@@ -7303,7 +7304,7 @@ protected void visitAnsiCaseSearchedExpression(
73037304 appendSql ( "case" );
73047305 final SqlAstNodeRenderingMode original = this .parameterRenderingMode ;
73057306 for ( CaseSearchedExpression .WhenFragment whenFragment : caseSearchedExpression .getWhenFragments () ) {
7306- if ( original != SqlAstNodeRenderingMode .INLINE_ALL_PARAMETERS && original != SqlAstNodeRenderingMode .WRAP_ALL_PARAMETERS ) {
7307+ if ( original != SqlAstNodeRenderingMode .INLINE_ALL_PARAMETERS && ( original != SqlAstNodeRenderingMode .WRAP_ALL_PARAMETERS || wrappingStarted ) ) {
73077308 this .parameterRenderingMode = SqlAstNodeRenderingMode .DEFAULT ;
73087309 }
73097310 appendSql ( " when " );
@@ -7331,7 +7332,7 @@ protected void visitDecodeCaseSearchedExpression(CaseSearchedExpression caseSear
73317332 for ( int i = 0 ; i < caseNumber ; i ++ ) {
73327333 final CaseSearchedExpression .WhenFragment whenFragment = whenFragments .get ( i );
73337334 Predicate predicate = whenFragment .getPredicate ();
7334- if ( original != SqlAstNodeRenderingMode .INLINE_ALL_PARAMETERS && original != SqlAstNodeRenderingMode .WRAP_ALL_PARAMETERS ) {
7335+ if ( original != SqlAstNodeRenderingMode .INLINE_ALL_PARAMETERS && ( original != SqlAstNodeRenderingMode .WRAP_ALL_PARAMETERS || wrappingStarted ) ) {
73357336 this .parameterRenderingMode = SqlAstNodeRenderingMode .DEFAULT ;
73367337 }
73377338 if ( i != 0 ) {
@@ -7378,12 +7379,12 @@ protected void visitAnsiCaseSimpleExpression(
73787379 Consumer <Expression > resultRenderer ) {
73797380 appendSql ( "case " );
73807381 final SqlAstNodeRenderingMode original = this .parameterRenderingMode ;
7381- if ( original != SqlAstNodeRenderingMode .INLINE_ALL_PARAMETERS && original != SqlAstNodeRenderingMode .WRAP_ALL_PARAMETERS ) {
7382+ if ( original != SqlAstNodeRenderingMode .INLINE_ALL_PARAMETERS && ( original != SqlAstNodeRenderingMode .WRAP_ALL_PARAMETERS || wrappingStarted ) ) {
73827383 this .parameterRenderingMode = SqlAstNodeRenderingMode .DEFAULT ;
73837384 }
73847385 caseSimpleExpression .getFixture ().accept ( this );
73857386 for ( CaseSimpleExpression .WhenFragment whenFragment : caseSimpleExpression .getWhenFragments () ) {
7386- if ( original != SqlAstNodeRenderingMode .INLINE_ALL_PARAMETERS && original != SqlAstNodeRenderingMode .WRAP_ALL_PARAMETERS ) {
7387+ if ( original != SqlAstNodeRenderingMode .INLINE_ALL_PARAMETERS && ( original != SqlAstNodeRenderingMode .WRAP_ALL_PARAMETERS || wrappingStarted ) ) {
73877388 this .parameterRenderingMode = SqlAstNodeRenderingMode .DEFAULT ;
73887389 }
73897390 appendSql ( " when " );
0 commit comments