Skip to content

Commit 319c0b1

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

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

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

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1159,8 +1159,9 @@ protected void visitSetAssignment(Assignment assignment) {
11591159
}
11601160
final List<ColumnReference> columnReferences = assignable.getColumnReferences();
11611161
final Expression assignedValue = assignment.getAssignedValue();
1162+
final boolean affectMutlipleTables = affectedTableNames.size() > 1;
11621163
if ( columnReferences.size() == 1 ) {
1163-
columnReferences.get( 0 ).appendColumnForWrite( this, null );
1164+
appendColumn( columnReferences.get( 0 ) );
11641165
appendSql( '=' );
11651166
final SqlTuple sqlTuple = getSqlTuple( assignedValue );
11661167
if ( sqlTuple != null ) {
@@ -1175,7 +1176,7 @@ else if ( assignedValue instanceof SelectStatement ) {
11751176
char separator = OPEN_PARENTHESIS;
11761177
for ( ColumnReference columnReference : columnReferences ) {
11771178
appendSql( separator );
1178-
columnReference.appendColumnForWrite( this, null );
1179+
appendColumn( columnReference );
11791180
separator = COMMA_SEPARATOR_CHAR;
11801181
}
11811182
appendSql( ")=" );
@@ -1184,7 +1185,7 @@ else if ( assignedValue instanceof SelectStatement ) {
11841185
else {
11851186
assert assignedValue instanceof SqlTupleContainer;
11861187
final List<? extends Expression> expressions = ( (SqlTupleContainer) assignedValue ).getSqlTuple().getExpressions();
1187-
columnReferences.get( 0 ).appendColumnForWrite( this, null );
1188+
appendColumn( columnReferences.get( 0 ) );
11881189
appendSql( '=' );
11891190
expressions.get( 0 ).accept( this );
11901191
for ( int i = 1; i < columnReferences.size(); i++ ) {
@@ -1196,6 +1197,15 @@ else if ( assignedValue instanceof SelectStatement ) {
11961197
}
11971198
}
11981199

1200+
private void appendColumn(ColumnReference column) {
1201+
if ( affectedTableNames.size() > 1 ) {
1202+
column.appendColumnForWrite( this );
1203+
}
1204+
else {
1205+
column.appendColumnForWrite( this, null );
1206+
}
1207+
}
1208+
11991209
protected void visitSetAssignmentEmulateJoin(Assignment assignment, UpdateStatement statement) {
12001210
final Assignable assignable = assignment.getAssignable();
12011211
if ( assignable instanceof SqmPathInterpretation<?> sqmPathInterpretation ) {

0 commit comments

Comments
 (0)