diff --git a/jOOQ/src/main/java/org/jooq/impl/JoinTable.java b/jOOQ/src/main/java/org/jooq/impl/JoinTable.java index 487fdbd654..3b14c7a2d3 100755 --- a/jOOQ/src/main/java/org/jooq/impl/JoinTable.java +++ b/jOOQ/src/main/java/org/jooq/impl/JoinTable.java @@ -682,18 +682,22 @@ implements } if (search(lhs, keyFields[0].getTable()) != null) { - for (ForeignKey key : lhs.getReferences()) { - if (key.getFields().containsAll(unaliased)) { + for (ForeignKey key : lhs.getReferences()) + if (key.getFields().containsAll(unaliased) && unaliased.containsAll(key.getFields())) + return onKey(key); + + for (ForeignKey key : lhs.getReferences()) + if (key.getFields().containsAll(unaliased)) return onKey(key); - } - } } else if (search(rhs, keyFields[0].getTable()) != null) { - for (ForeignKey key : rhs.getReferences()) { - if (key.getFields().containsAll(unaliased)) { + for (ForeignKey key : rhs.getReferences()) + if (key.getFields().containsAll(unaliased) && unaliased.containsAll(key.getFields())) + return onKey(key); + + for (ForeignKey key : rhs.getReferences()) + if (key.getFields().containsAll(unaliased)) return onKey(key); - } - } } }