diff --git a/jOOQ/src/main/java/org/jooq/InverseForeignKey.java b/jOOQ/src/main/java/org/jooq/InverseForeignKey.java
index 3c15a037e1..bd436ea70b 100644
--- a/jOOQ/src/main/java/org/jooq/InverseForeignKey.java
+++ b/jOOQ/src/main/java/org/jooq/InverseForeignKey.java
@@ -37,14 +37,9 @@
*/
package org.jooq;
-import java.util.Collection;
import java.util.List;
-import org.jooq.exception.DataAccessException;
-
-import org.jetbrains.annotations.Blocking;
import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
/**
* An InverseForeignKey is an inverse {@link ForeignKey}. It
diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractContext.java b/jOOQ/src/main/java/org/jooq/impl/AbstractContext.java
index f89092958a..e9dd654ff3 100644
--- a/jOOQ/src/main/java/org/jooq/impl/AbstractContext.java
+++ b/jOOQ/src/main/java/org/jooq/impl/AbstractContext.java
@@ -49,6 +49,7 @@ import static org.jooq.JoinType.LEFT_OUTER_JOIN;
import static org.jooq.conf.InvocationOrder.REVERSE;
import static org.jooq.conf.ParamType.INDEXED;
import static org.jooq.impl.DSL.noCondition;
+import static org.jooq.impl.JoinTable.onKey0;
import static org.jooq.impl.Tools.DATAKEY_RESET_IN_SUBQUERY_SCOPE;
import static org.jooq.impl.Tools.EMPTY_CLAUSE;
import static org.jooq.impl.Tools.EMPTY_QUERYPART;
@@ -1209,7 +1210,10 @@ abstract class AbstractContext> extends AbstractScope imple
// [#14985] Once explicit join paths stabilise, it should be possible
// to omit the ON clause here, and have it generated in JoinTable
- result = result.join(e.getValue().joinTree(), type).onKey(e.getKey());
+ Table> t = e.getValue().joinTree();
+ result = result
+ .join(t, type)
+ .on(onKey0(e.getKey(), result, t));
}
for (Entry, JoinNode> e : pathsToMany.entrySet()) {
@@ -1226,7 +1230,10 @@ abstract class AbstractContext> extends AbstractScope imple
break;
}
- result = result.join(e.getValue().joinTree(), type).onKey(e.getKey().getForeignKey());
+ Table> t = e.getValue().joinTree();
+ result = result
+ .join(t, type)
+ .on(onKey0(e.getKey().getForeignKey(), t, result));
}
return result;
diff --git a/jOOQ/src/main/java/org/jooq/impl/Internal.java b/jOOQ/src/main/java/org/jooq/impl/Internal.java
index 1d08dc054f..db6f3b0b4f 100644
--- a/jOOQ/src/main/java/org/jooq/impl/Internal.java
+++ b/jOOQ/src/main/java/org/jooq/impl/Internal.java
@@ -292,13 +292,21 @@ public final class Internal {
*/
@NotNull
public static final Name createPathAlias(Table> child, ForeignKey, ?> path) {
- Name name = DSL.name(path.getName());
+ return createPathAlias(child, path, "");
+ }
+
+ /**
+ * Factory method for path aliases.
+ */
+ @NotNull
+ static final Name createPathAlias(Table> child, ForeignKey, ?> path, String suffix) {
+ Name name = DSL.name(path.getName() + suffix);
if (child instanceof TableImpl> t) {
if (t.childPath != null)
name = createPathAlias(t.path, t.childPath).append(name);
else if (t.parentPath != null)
- name = createPathAlias(t.path, t.parentPath.getForeignKey()).append(name);
+ name = createPathAlias(t.path, t.parentPath.getForeignKey(), ".inverse").append(name);
else
name = child.getQualifiedName().append(name);
}
diff --git a/jOOQ/src/main/java/org/jooq/impl/InverseReferenceImpl.java b/jOOQ/src/main/java/org/jooq/impl/InverseReferenceImpl.java
index c469257c44..fcd6cf2874 100644
--- a/jOOQ/src/main/java/org/jooq/impl/InverseReferenceImpl.java
+++ b/jOOQ/src/main/java/org/jooq/impl/InverseReferenceImpl.java
@@ -40,14 +40,12 @@ package org.jooq.impl;
import java.util.List;
import org.jooq.ConstraintEnforcementStep;
-import org.jooq.Record;
import org.jooq.ForeignKey;
import org.jooq.InverseForeignKey;
+import org.jooq.Record;
import org.jooq.TableField;
import org.jooq.impl.QOM.UTransient;
-import org.jetbrains.annotations.NotNull;
-
/**
* @author Lukas Eder
*/
diff --git a/jOOQ/src/main/java/org/jooq/impl/TableImpl.java b/jOOQ/src/main/java/org/jooq/impl/TableImpl.java
index 66c40b31e0..48bf78f863 100644
--- a/jOOQ/src/main/java/org/jooq/impl/TableImpl.java
+++ b/jOOQ/src/main/java/org/jooq/impl/TableImpl.java
@@ -211,7 +211,7 @@ implements
}
public TableImpl(Table> parent, InverseForeignKey, R> parentPath, Table child) {
- this(createPathAlias(parent, parentPath.getForeignKey()), null, parent, parentPath, child, null, child.getCommentPart());
+ this(createPathAlias(parent, parentPath.getForeignKey(), ".inverse"), null, parent, parentPath, child, null, child.getCommentPart());
}
public TableImpl(Name name, Schema schema, Table> path, ForeignKey, R> childPath, Table aliased, Field>[] parameters, Comment comment) {