diff --git a/jOOQ/src/main/java/org/jooq/impl/Fields.java b/jOOQ/src/main/java/org/jooq/impl/Fields.java index 0c850ee6b9..bd897a3393 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Fields.java +++ b/jOOQ/src/main/java/org/jooq/impl/Fields.java @@ -43,6 +43,7 @@ package org.jooq.impl; import static org.jooq.impl.Utils.indexOrFail; +import java.sql.SQLWarning; import java.util.Collection; import org.jooq.Clause; @@ -118,7 +119,7 @@ class Fields extends AbstractQueryPart implements RecordType extends AbstractQueryPart implements RecordType field(String name) { - if (name == null) { + public final Field field(String fieldName) { + if (fieldName == null) return null; - } - for (Field f : fields) { - if (f.getName().equals(name)) { - return f; - } - } + Field columnMatch = null; - return null; + for (Field f : fields) + if (f.getName().equals(fieldName)) + if (columnMatch == null) + columnMatch = f; + else + // [#4476] [#4477] [#5046] This might be unintentional from a user + // perspective, e.g. when ambiguous ID columns are present. + log.info("Ambiguous match found for " + fieldName + ". Both " + columnMatch + " and " + f + " match.", new SQLWarning()); + + return columnMatch; } @Override