From 07f35be8330a9d209668cf9b7bc458facae86eca Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Tue, 2 Jul 2013 22:34:44 +0200 Subject: [PATCH] [#2594] Add primary key and foreign key navigation support in JDBCDatabase --- .../java/org/jooq/util/jdbc/JDBCDatabase.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/jOOQ-meta/src/main/java/org/jooq/util/jdbc/JDBCDatabase.java b/jOOQ-meta/src/main/java/org/jooq/util/jdbc/JDBCDatabase.java index 12073cd20a..6eb80875ca 100644 --- a/jOOQ-meta/src/main/java/org/jooq/util/jdbc/JDBCDatabase.java +++ b/jOOQ-meta/src/main/java/org/jooq/util/jdbc/JDBCDatabase.java @@ -41,12 +41,15 @@ import java.util.ArrayList; import java.util.List; import org.jooq.DSLContext; +import org.jooq.Field; import org.jooq.Schema; import org.jooq.Sequence; import org.jooq.Table; +import org.jooq.UniqueKey; import org.jooq.impl.DSL; import org.jooq.util.AbstractDatabase; import org.jooq.util.ArrayDefinition; +import org.jooq.util.ColumnDefinition; import org.jooq.util.DataTypeDefinition; import org.jooq.util.DefaultDataTypeDefinition; import org.jooq.util.DefaultRelations; @@ -79,6 +82,21 @@ public class JDBCDatabase extends AbstractDatabase { @Override protected void loadUniqueKeys(DefaultRelations relations) throws SQLException { + for (UniqueKey key : create().meta().getPrimaryKeys()) { + Schema schema = key.getTable().getSchema(); + SchemaDefinition s = getSchema(schema == null ? "" : schema.getName()); + + if (s != null) { + TableDefinition t = getTable(s, key.getTable().getName()); + + if (t != null) { + for (Field field : key.getFields()) { + ColumnDefinition c = t.getColumn(field.getName()); + relations.addPrimaryKey("PK_" + key.getTable().getName(), c); + } + } + } + } } @Override