diff --git a/jOOQ-test/src/org/jooq/test/_/testcases/GeneralTests.java b/jOOQ-test/src/org/jooq/test/_/testcases/GeneralTests.java
index bd6e5dd662..d45bd6e766 100644
--- a/jOOQ-test/src/org/jooq/test/_/testcases/GeneralTests.java
+++ b/jOOQ-test/src/org/jooq/test/_/testcases/GeneralTests.java
@@ -658,17 +658,24 @@ extends BaseTest ua = (UpdatableTable) a;
UpdatableTable ub = (UpdatableTable) b;
assertEquals(2, ua.getMainKey().getReferences().size());
- assertEquals(b, ua.getMainKey().getReferences().get(0).getTable());
- assertEquals(b, ua.getMainKey().getReferences().get(1).getTable());
+ assertEquals(TBook(), ua.getMainKey().getReferences().get(0).getTable());
+ assertEquals(TBook(), ua.getMainKey().getReferences().get(1).getTable());
assertTrue(b.getReferences().containsAll(ua.getReferencesFrom(b)));
assertTrue(b.getReferences().containsAll(ub.getReferencesFrom(a)));
assertEquals(b.getReferencesTo(a), ua.getReferencesFrom(b));
+ assertEquals(TBook().getReferencesTo(a), ua.getReferencesFrom(b));
+ assertEquals(b.getReferencesTo(a), TAuthor().getReferencesFrom(b));
}
}
else {
diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractTable.java b/jOOQ/src/main/java/org/jooq/impl/AbstractTable.java
index e714e4fd94..8d4aa77ed8 100644
--- a/jOOQ/src/main/java/org/jooq/impl/AbstractTable.java
+++ b/jOOQ/src/main/java/org/jooq/impl/AbstractTable.java
@@ -121,6 +121,25 @@ abstract class AbstractTable extends AbstractType implement
if (other.equals(reference.getKey().getTable())) {
result.add((ForeignKey) reference);
}
+
+ // TODO: Refactor the following two blocks and make things more OO
+ // [#1460] In case the other table was aliased using
+ else if (other instanceof TableImpl) {
+ Table aliased = ((TableImpl) other).getAliasedTable();
+
+ if (aliased != null && aliased.equals(reference.getKey().getTable())) {
+ result.add((ForeignKey) reference);
+ }
+ }
+
+ // [#1460] In case the other table was aliased using
+ else if (other instanceof TableAlias) {
+ Table aliased = ((TableAlias) other).getAliasedTable();
+
+ if (aliased != null && aliased.equals(reference.getKey().getTable())) {
+ result.add((ForeignKey) reference);
+ }
+ }
}
return Collections.unmodifiableList(result);
diff --git a/jOOQ/src/main/java/org/jooq/impl/TableAlias.java b/jOOQ/src/main/java/org/jooq/impl/TableAlias.java
index 3d47b38b44..70055a1f30 100644
--- a/jOOQ/src/main/java/org/jooq/impl/TableAlias.java
+++ b/jOOQ/src/main/java/org/jooq/impl/TableAlias.java
@@ -66,6 +66,17 @@ class TableAlias extends AbstractTable {
this.aliasProvider = new AliasProviderImpl>(table, alias, wrapInParentheses);
}
+ /**
+ * Get the aliased table wrapped by this table
+ */
+ Table getAliasedTable() {
+ if (aliasProvider != null) {
+ return aliasProvider.getAliasProvider();
+ }
+
+ return null;
+ }
+
@Override
public final List> getReferences() {
return aliasProvider.getAliasProvider().getReferences();
diff --git a/jOOQ/src/main/java/org/jooq/impl/TableImpl.java b/jOOQ/src/main/java/org/jooq/impl/TableImpl.java
index 24cf5bb577..c37a64ecd3 100644
--- a/jOOQ/src/main/java/org/jooq/impl/TableImpl.java
+++ b/jOOQ/src/main/java/org/jooq/impl/TableImpl.java
@@ -80,6 +80,17 @@ public class TableImpl extends AbstractTable {
}
}
+ /**
+ * Get the aliased table wrapped by this table
+ */
+ Table getAliasedTable() {
+ if (alias != null) {
+ return alias.getAliasProvider();
+ }
+
+ return null;
+ }
+
@Override
public final List getAttachables0() {
if (alias != null) {