diff --git a/jOOQ/src/main/java/org/jooq/impl/JoinTable.java b/jOOQ/src/main/java/org/jooq/impl/JoinTable.java index 1150183693..2ee41d87aa 100644 --- a/jOOQ/src/main/java/org/jooq/impl/JoinTable.java +++ b/jOOQ/src/main/java/org/jooq/impl/JoinTable.java @@ -356,9 +356,9 @@ final class JoinTable extends AbstractTable implements TableOptionalOnSt } context.sql(' ') - .visit(lhs.field(field)) + .visit(Tools.qualify(field, lhs)) .sql(" = ") - .visit(rhs.field(field)); + .visit(Tools.qualify(field, rhs)); } context.end(TABLE_JOIN_ON); diff --git a/jOOQ/src/main/java/org/jooq/impl/Tools.java b/jOOQ/src/main/java/org/jooq/impl/Tools.java index 0f17be927e..81f2733fd0 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Tools.java +++ b/jOOQ/src/main/java/org/jooq/impl/Tools.java @@ -3626,4 +3626,18 @@ final class Tools { return false; } + + static final Field qualify(Field field, Table table) { + Field result = table.field(field); + + if (result != null) + return result; + + Name[] part = table.getQualifiedName().parts(); + Name[] name = new Name[part.length + 1]; + System.arraycopy(part, 0, name, 0, part.length); + name[part.length] = field.getQualifiedName().unqualifiedName(); + + return DSL.field(DSL.name(name), field.getDataType()); + } }