From 1d62737f950de489d78de5821f1d5fe1f4aabf73 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Thu, 24 Dec 2020 14:07:11 +0100 Subject: [PATCH] =?UTF-8?q?[jOOQ/jOOQ#11150]=20Omitting=20parts=20of=20the?= =?UTF-8?q?=20foreign=20key=20in=20onKey(TableField=E2=80=A6)=20doesn't=20?= =?UTF-8?q?produce=20the=20expected=20result?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/org/jooq/impl/JoinTable.java | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) 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); - } - } } }