Skip to content

Commit 07f932e

Browse files
committed
HHH-19579 Criteria update join - Column 'code' in SET is ambiguous
1 parent 8397bb2 commit 07f932e

File tree

5 files changed

+42
-2
lines changed

5 files changed

+42
-2
lines changed

hibernate-community-dialects/src/main/java/org/hibernate/community/dialect/MariaDBLegacySqlAstTranslator.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -394,4 +394,13 @@ protected void renderStringContainsExactlyPredicate(Expression haystack, Express
394394
needle.accept( this );
395395
appendSql( ",'~','~~'),'?','~?'),'%','~%'),'%') escape '~'" );
396396
}
397+
398+
@Override
399+
protected void appendAssignmentColumn(ColumnReference column) {
400+
column.appendColumnForWrite(
401+
this,
402+
getAffectedTableNames().size() > 1 && !(getStatement() instanceof InsertSelectStatement)
403+
? determineColumnReferenceQualifier( column )
404+
: null );
405+
}
397406
}

hibernate-community-dialects/src/main/java/org/hibernate/community/dialect/MySQLLegacySqlAstTranslator.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -413,4 +413,13 @@ protected void renderStringContainsExactlyPredicate(Expression haystack, Express
413413
needle.accept( this );
414414
appendSql( ",'~','~~'),'?','~?'),'%','~%'),'%') escape '~'" );
415415
}
416+
417+
@Override
418+
protected void appendAssignmentColumn(ColumnReference column) {
419+
column.appendColumnForWrite(
420+
this,
421+
getAffectedTableNames().size() > 1 && !(getStatement() instanceof InsertSelectStatement)
422+
? determineColumnReferenceQualifier( column )
423+
: null );
424+
}
416425
}

hibernate-core/src/main/java/org/hibernate/dialect/MariaDBSqlAstTranslator.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -398,4 +398,13 @@ protected void renderStringContainsExactlyPredicate(Expression haystack, Express
398398
appendSql( ",'~','~~'),'?','~?'),'%','~%'),'%') escape '~'" );
399399
}
400400

401+
@Override
402+
protected void appendAssignmentColumn(ColumnReference column) {
403+
column.appendColumnForWrite(
404+
this,
405+
getAffectedTableNames().size() > 1 && !(getStatement() instanceof InsertSelectStatement)
406+
? determineColumnReferenceQualifier( column )
407+
: null );
408+
}
409+
401410
}

hibernate-core/src/main/java/org/hibernate/dialect/MySQLSqlAstTranslator.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -467,4 +467,13 @@ protected void renderStringContainsExactlyPredicate(Expression haystack, Express
467467
needle.accept( this );
468468
appendSql( ",'~','~~'),'?','~?'),'%','~%'),'%') escape '~'" );
469469
}
470+
471+
@Override
472+
protected void appendAssignmentColumn(ColumnReference column) {
473+
column.appendColumnForWrite(
474+
this,
475+
getAffectedTableNames().size() > 1 && !(getStatement() instanceof InsertSelectStatement)
476+
? determineColumnReferenceQualifier( column )
477+
: null );
478+
}
470479
}

hibernate-core/src/main/java/org/hibernate/sql/ast/spi/AbstractSqlAstTranslator.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1205,7 +1205,7 @@ protected void renderSetClause(List<Assignment> assignments) {
12051205
protected void visitSetAssignment(Assignment assignment) {
12061206
final List<ColumnReference> columnReferences = assignment.getAssignable().getColumnReferences();
12071207
if ( columnReferences.size() == 1 ) {
1208-
columnReferences.get( 0 ).appendColumnForWrite( this, null );
1208+
appendAssignmentColumn( columnReferences.get( 0 ) );
12091209
appendSql( '=' );
12101210
final Expression assignedValue = assignment.getAssignedValue();
12111211
final SqlTuple sqlTuple = SqlTupleContainer.getSqlTuple( assignedValue );
@@ -1221,14 +1221,18 @@ protected void visitSetAssignment(Assignment assignment) {
12211221
char separator = OPEN_PARENTHESIS;
12221222
for ( ColumnReference columnReference : columnReferences ) {
12231223
appendSql( separator );
1224-
columnReference.appendColumnForWrite( this, null );
1224+
appendAssignmentColumn( columnReference );
12251225
separator = COMMA_SEPARATOR_CHAR;
12261226
}
12271227
appendSql( ")=" );
12281228
assignment.getAssignedValue().accept( this );
12291229
}
12301230
}
12311231

1232+
protected void appendAssignmentColumn(ColumnReference column) {
1233+
column.appendColumnForWrite( this, null );
1234+
}
1235+
12321236
protected void visitSetAssignmentEmulateJoin(Assignment assignment, UpdateStatement statement) {
12331237
final List<ColumnReference> columnReferences = assignment.getAssignable().getColumnReferences();
12341238
final Expression valueExpression;

0 commit comments

Comments
 (0)