Skip to content

Commit dcfdc6f

Browse files
committed
HHH-19579 Criteria update join - Column 'code' in SET is ambiguous
1 parent 9a9e147 commit dcfdc6f

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

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

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1160,7 +1160,7 @@ protected void visitSetAssignment(Assignment assignment) {
11601160
final List<ColumnReference> columnReferences = assignable.getColumnReferences();
11611161
final Expression assignedValue = assignment.getAssignedValue();
11621162
if ( columnReferences.size() == 1 ) {
1163-
columnReferences.get( 0 ).appendColumnForWrite( this, null );
1163+
appendColumn( columnReferences.get( 0 ) );
11641164
appendSql( '=' );
11651165
final SqlTuple sqlTuple = getSqlTuple( assignedValue );
11661166
if ( sqlTuple != null ) {
@@ -1175,7 +1175,7 @@ else if ( assignedValue instanceof SelectStatement ) {
11751175
char separator = OPEN_PARENTHESIS;
11761176
for ( ColumnReference columnReference : columnReferences ) {
11771177
appendSql( separator );
1178-
columnReference.appendColumnForWrite( this, null );
1178+
appendColumn( columnReference );
11791179
separator = COMMA_SEPARATOR_CHAR;
11801180
}
11811181
appendSql( ")=" );
@@ -1184,7 +1184,7 @@ else if ( assignedValue instanceof SelectStatement ) {
11841184
else {
11851185
assert assignedValue instanceof SqlTupleContainer;
11861186
final List<? extends Expression> expressions = ( (SqlTupleContainer) assignedValue ).getSqlTuple().getExpressions();
1187-
columnReferences.get( 0 ).appendColumnForWrite( this, null );
1187+
appendColumn( columnReferences.get( 0 ) );
11881188
appendSql( '=' );
11891189
expressions.get( 0 ).accept( this );
11901190
for ( int i = 1; i < columnReferences.size(); i++ ) {
@@ -1196,6 +1196,13 @@ else if ( assignedValue instanceof SelectStatement ) {
11961196
}
11971197
}
11981198

1199+
protected void appendColumn(ColumnReference column) {
1200+
column.appendColumnForWrite(
1201+
this,
1202+
affectedTableNames.size() > 1 ? determineColumnReferenceQualifier( column ) : null
1203+
);
1204+
}
1205+
11991206
protected void visitSetAssignmentEmulateJoin(Assignment assignment, UpdateStatement statement) {
12001207
final Assignable assignable = assignment.getAssignable();
12011208
if ( assignable instanceof SqmPathInterpretation<?> sqmPathInterpretation ) {

0 commit comments

Comments
 (0)