From e29b417823bb7191b4b9f8ee3f517bc3aeb5b6b0 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Sun, 12 Feb 2012 11:27:10 +0000 Subject: [PATCH] [#1133] Compilation errors in generated source code if the same constraint name exists in several schemata --- .../java/org/jooq/util/DefaultRelations.java | 86 +++++-- .../java/org/jooq/util/ase/ASEDatabase.java | 2 +- .../java/org/jooq/util/db2/DB2Database.java | 11 +- .../org/jooq/util/derby/DerbyDatabase.java | 39 ++-- .../java/org/jooq/util/h2/H2Database.java | 10 +- .../org/jooq/util/hsqldb/HSQLDBDatabase.java | 9 +- .../org/jooq/util/ingres/IngresDatabase.java | 9 +- .../org/jooq/util/mysql/MySQLDatabase.java | 8 +- .../org/jooq/util/oracle/OracleDatabase.java | 11 +- .../jooq/util/postgres/PostgresDatabase.java | 9 +- .../util/sqlserver/SQLServerDatabase.java | 9 +- .../org/jooq/util/sybase/SybaseDatabase.java | 2 +- jOOQ-test/src/org/jooq/test/oracle/create.sql | 37 +++- .../generatedclasses/multi_schema/Keys.java | 4 + .../multi_schema/MultiSchema.java | 7 +- .../generatedclasses/multi_schema/Tables.java | 10 + .../multi_schema/tables/TAuthor.java | 95 ++++++++ .../multi_schema/tables/TBook.java | 128 +++++++++++ .../tables/records/TAuthorRecord.java | 137 ++++++++++++ .../tables/records/TBookRecord.java | 209 ++++++++++++++++++ 20 files changed, 769 insertions(+), 63 deletions(-) create mode 100644 jOOQ-test/src/org/jooq/test/oracle/generatedclasses/multi_schema/tables/TAuthor.java create mode 100644 jOOQ-test/src/org/jooq/test/oracle/generatedclasses/multi_schema/tables/TBook.java create mode 100644 jOOQ-test/src/org/jooq/test/oracle/generatedclasses/multi_schema/tables/records/TAuthorRecord.java create mode 100644 jOOQ-test/src/org/jooq/test/oracle/generatedclasses/multi_schema/tables/records/TBookRecord.java diff --git a/jOOQ-meta/src/main/java/org/jooq/util/DefaultRelations.java b/jOOQ-meta/src/main/java/org/jooq/util/DefaultRelations.java index c609d26516..3689ae1f7c 100644 --- a/jOOQ-meta/src/main/java/org/jooq/util/DefaultRelations.java +++ b/jOOQ-meta/src/main/java/org/jooq/util/DefaultRelations.java @@ -48,9 +48,9 @@ public class DefaultRelations implements Relations { private static final JooqLogger log = JooqLogger.getLogger(DefaultRelations.class); - private Map foreignKeys = new LinkedHashMap(); - private Map primaryKeys = new LinkedHashMap(); - private Map uniqueKeys = new LinkedHashMap(); + private Map foreignKeys = new LinkedHashMap(); + private Map primaryKeys = new LinkedHashMap(); + private Map uniqueKeys = new LinkedHashMap(); private Map foreignKeysByColumn = new LinkedHashMap(); private Map primaryKeysByColumn = new LinkedHashMap(); @@ -75,41 +75,46 @@ public class DefaultRelations implements Relations { } private UniqueKeyDefinition getUniqueKey(String keyName, ColumnDefinition column, boolean isPK) { - UniqueKeyDefinition key = uniqueKeys.get(keyName); + UniqueKeyDefinition key = uniqueKeys.get(key(column, keyName)); if (key == null) { key = new DefaultUniqueKeyDefinition(column.getSchema(), keyName, column.getContainer()); - uniqueKeys.put(keyName, key); + uniqueKeys.put(key(column, keyName), key); if (isPK) { - primaryKeys.put(keyName, key); + primaryKeys.put(key(column, keyName), key); } } return key; } - public void addForeignKey(String foreignKeyName, String uniqueKeyName, ColumnDefinition column) { + public void addForeignKey( + String foreignKeyName, + String uniqueKeyName, + ColumnDefinition foreignKeyColumn, + SchemaDefinition uniqueKeySchema) { + if (log.isDebugEnabled()) { - log.debug("Adding foreign key", foreignKeyName + " (" + column + ") referencing " + uniqueKeyName); + log.debug("Adding foreign key", foreignKeyName + " (" + foreignKeyColumn + ") referencing " + uniqueKeyName); } - ForeignKeyDefinition foreignKey = foreignKeys.get(foreignKeyName); + ForeignKeyDefinition foreignKey = foreignKeys.get(key(foreignKeyColumn, foreignKeyName)); if (foreignKey == null) { - UniqueKeyDefinition uniqueKey = uniqueKeys.get(uniqueKeyName); + UniqueKeyDefinition uniqueKey = uniqueKeys.get(key(uniqueKeySchema, uniqueKeyName)); // If the unique key is not loaded, ignore this foreign key if (uniqueKey != null) { - foreignKey = new DefaultForeignKeyDefinition(column.getSchema(), foreignKeyName, column.getContainer(), uniqueKey); - foreignKeys.put(foreignKeyName, foreignKey); + foreignKey = new DefaultForeignKeyDefinition(foreignKeyColumn.getSchema(), foreignKeyName, foreignKeyColumn.getContainer(), uniqueKey); + foreignKeys.put(key(foreignKeyColumn, foreignKeyName), foreignKey); uniqueKey.getForeignKeys().add(foreignKey); } } if (foreignKey != null) { - foreignKey.getKeyColumns().add(column); + foreignKey.getKeyColumns().add(foreignKeyColumn); } } @@ -191,4 +196,59 @@ public class DefaultRelations implements Relations { return new ArrayList(result); } + + private static Key key(Definition definition, String keyName) { + return new Key(definition.getSchema(), keyName); + } + + /** + * A simple local wrapper for a key definition (schema + key name) + */ + private static class Key { + final SchemaDefinition schema; + final String keyName; + + Key(SchemaDefinition schema, String keyName) { + this.schema = schema; + this.keyName = keyName; + } + + @Override + public String toString() { + return "Key [schema=" + schema + ", keyName=" + keyName + "]"; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((keyName == null) ? 0 : keyName.hashCode()); + result = prime * result + ((schema == null) ? 0 : schema.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + Key other = (Key) obj; + if (keyName == null) { + if (other.keyName != null) + return false; + } + else if (!keyName.equals(other.keyName)) + return false; + if (schema == null) { + if (other.schema != null) + return false; + } + else if (!schema.equals(other.schema)) + return false; + return true; + } + } } diff --git a/jOOQ-meta/src/main/java/org/jooq/util/ase/ASEDatabase.java b/jOOQ-meta/src/main/java/org/jooq/util/ase/ASEDatabase.java index 82b3f63c03..b56b1289f6 100644 --- a/jOOQ-meta/src/main/java/org/jooq/util/ase/ASEDatabase.java +++ b/jOOQ-meta/src/main/java/org/jooq/util/ase/ASEDatabase.java @@ -205,7 +205,7 @@ public class ASEDatabase extends AbstractDatabase { String uniqueKeyName = record.getValueAsString("pk"); ColumnDefinition column = referencingTable.getColumn(foreignKeyColumnName); - relations.addForeignKey(foreignKeyName, uniqueKeyName, column); + relations.addForeignKey(foreignKeyName, uniqueKeyName, column, getSchema()); } } } diff --git a/jOOQ-meta/src/main/java/org/jooq/util/db2/DB2Database.java b/jOOQ-meta/src/main/java/org/jooq/util/db2/DB2Database.java index 4d367ce66d..23c258f864 100644 --- a/jOOQ-meta/src/main/java/org/jooq/util/db2/DB2Database.java +++ b/jOOQ-meta/src/main/java/org/jooq/util/db2/DB2Database.java @@ -149,7 +149,8 @@ public class DB2Database extends AbstractDatabase { References.TABSCHEMA.trim(), References.TABNAME, References.FK_COLNAMES, - concat(References.REFTABNAME, val("__"), References.REFKEYNAME).as("referenced_constraint_name")) + concat(References.REFTABNAME, val("__"), References.REFKEYNAME).as("referenced_constraint_name"), + References.REFTABSCHEMA.trim()) .from(REFERENCES) .where(References.TABSCHEMA.in(getInputSchemata())) .orderBy( @@ -159,13 +160,15 @@ public class DB2Database extends AbstractDatabase { References.FK_COLNAMES) .fetch()) { - SchemaDefinition schema = getSchema(record.getValue(References.TABSCHEMA.trim())); + SchemaDefinition foreignKeySchema = getSchema(record.getValue(References.TABSCHEMA.trim())); + SchemaDefinition uniqueKeySchema = getSchema(record.getValue(References.REFTABSCHEMA.trim())); + String foreignKey = record.getValue("constraint_name", String.class); String foreignKeyTableName = record.getValue(References.TABNAME); String foreignKeyColumn = record.getValue(References.FK_COLNAMES); String uniqueKey = record.getValue("referenced_constraint_name", String.class); - TableDefinition foreignKeyTable = getTable(schema, foreignKeyTableName); + TableDefinition foreignKeyTable = getTable(foreignKeySchema, foreignKeyTableName); if (foreignKeyTable != null) { /* @@ -178,7 +181,7 @@ public class DB2Database extends AbstractDatabase { for (int i = 0; i < referencingColumnNames.length; i++) { ColumnDefinition column = foreignKeyTable.getColumn(referencingColumnNames[i]); - relations.addForeignKey(foreignKey, uniqueKey, column); + relations.addForeignKey(foreignKey, uniqueKey, column, uniqueKeySchema); } } } diff --git a/jOOQ-meta/src/main/java/org/jooq/util/derby/DerbyDatabase.java b/jOOQ-meta/src/main/java/org/jooq/util/derby/DerbyDatabase.java index 8adfaaad3b..40bad1e1fc 100644 --- a/jOOQ-meta/src/main/java/org/jooq/util/derby/DerbyDatabase.java +++ b/jOOQ-meta/src/main/java/org/jooq/util/derby/DerbyDatabase.java @@ -144,39 +144,44 @@ public class DerbyDatabase extends AbstractDatabase { @Override protected void loadForeignKeys(DefaultRelations relations) throws SQLException { - Field foreignKey = field("fc.constraintname", String.class); - Field foreignKeyTable = field("ft.tablename", String.class); - Field foreignKeySchema = field("fs.schemaname", String.class); - Field foreignKeyDescriptor = field("fg.descriptor"); - Field uniqueKey = field("pc.constraintname", String.class); + Field fkName = field("fc.constraintname", String.class); + Field fkTable = field("ft.tablename", String.class); + Field fkSchema = field("fs.schemaname", String.class); + Field fkDescriptor = field("fg.descriptor"); + Field ukName = field("pc.constraintname", String.class); + Field ukSchema = field("ps.schemaname", String.class); for (Record record : create().select( - foreignKey, - foreignKeyTable, - foreignKeySchema, - foreignKeyDescriptor, - uniqueKey) + fkName, + fkTable, + fkSchema, + fkDescriptor, + ukName, + ukSchema) .from("sys.sysconstraints fc") .join("sys.sysforeignkeys f ").on("f.constraintid = fc.constraintid") .join("sys.sysconglomerates fg").on("fg.conglomerateid = f.conglomerateid") .join("sys.systables ft").on("ft.tableid = fg.tableid") .join("sys.sysschemas fs").on("ft.schemaid = fs.schemaid") .join("sys.sysconstraints pc").on("pc.constraintid = f.keyconstraintid") + .join("sys.sysschemas ps").on("pc.schemaid = ps.schemaid") .where("fc.type = 'F'") .fetch()) { - SchemaDefinition schema = getSchema(record.getValue(foreignKeySchema)); - String foreignKeyName = record.getValue(foreignKey); - String foreignKeyTableName = record.getValue(foreignKeyTable); - List foreignKeyIndexes = decode(record.getValueAsString(foreignKeyDescriptor)); - String uniqueKeyName = record.getValue(uniqueKey); + SchemaDefinition foreignKeySchema = getSchema(record.getValue(fkSchema)); + SchemaDefinition uniqueKeySchema = getSchema(record.getValue(ukSchema)); - TableDefinition referencingTable = getTable(schema, foreignKeyTableName); + String foreignKeyName = record.getValue(fkName); + String foreignKeyTableName = record.getValue(fkTable); + List foreignKeyIndexes = decode(record.getValueAsString(fkDescriptor)); + String uniqueKeyName = record.getValue(ukName); + + TableDefinition referencingTable = getTable(foreignKeySchema, foreignKeyTableName); if (referencingTable != null) { for (int i = 0; i < foreignKeyIndexes.size(); i++) { ColumnDefinition column = referencingTable.getColumn(foreignKeyIndexes.get(i)); - relations.addForeignKey(foreignKeyName, uniqueKeyName, column); + relations.addForeignKey(foreignKeyName, uniqueKeyName, column, uniqueKeySchema); } } } diff --git a/jOOQ-meta/src/main/java/org/jooq/util/h2/H2Database.java b/jOOQ-meta/src/main/java/org/jooq/util/h2/H2Database.java index db57146cea..e9d86f1602 100644 --- a/jOOQ-meta/src/main/java/org/jooq/util/h2/H2Database.java +++ b/jOOQ-meta/src/main/java/org/jooq/util/h2/H2Database.java @@ -142,7 +142,8 @@ public class H2Database extends AbstractDatabase { CrossReferences.FKTABLE_NAME, CrossReferences.FKTABLE_SCHEMA, CrossReferences.FKCOLUMN_NAME, - Constraints.CONSTRAINT_NAME) + Constraints.CONSTRAINT_NAME, + Constraints.CONSTRAINT_SCHEMA) .from(CROSS_REFERENCES) .join(CONSTRAINTS) .on(CrossReferences.PK_NAME.equal(Constraints.UNIQUE_INDEX_NAME)) @@ -155,18 +156,19 @@ public class H2Database extends AbstractDatabase { CrossReferences.ORDINAL_POSITION.asc()) .fetch()) { - SchemaDefinition schema = getSchema(record.getValue(CrossReferences.FKTABLE_SCHEMA)); + SchemaDefinition foreignKeySchema = getSchema(record.getValue(CrossReferences.FKTABLE_SCHEMA)); + SchemaDefinition uniqueKeySchema = getSchema(record.getValue(Constraints.CONSTRAINT_SCHEMA)); String foreignKeyTableName = record.getValue(CrossReferences.FKTABLE_NAME); String foreignKeyColumn = record.getValue(CrossReferences.FKCOLUMN_NAME); String foreignKey = record.getValue(CrossReferences.FK_NAME); String uniqueKey = record.getValue(Constraints.CONSTRAINT_NAME); - TableDefinition foreignKeyTable = getTable(schema, foreignKeyTableName); + TableDefinition foreignKeyTable = getTable(foreignKeySchema, foreignKeyTableName); if (foreignKeyTable != null) { ColumnDefinition referencingColumn = foreignKeyTable.getColumn(foreignKeyColumn); - relations.addForeignKey(foreignKey, uniqueKey, referencingColumn); + relations.addForeignKey(foreignKey, uniqueKey, referencingColumn, uniqueKeySchema); } } } diff --git a/jOOQ-meta/src/main/java/org/jooq/util/hsqldb/HSQLDBDatabase.java b/jOOQ-meta/src/main/java/org/jooq/util/hsqldb/HSQLDBDatabase.java index 23349e57fb..0f3a13aae3 100644 --- a/jOOQ-meta/src/main/java/org/jooq/util/hsqldb/HSQLDBDatabase.java +++ b/jOOQ-meta/src/main/java/org/jooq/util/hsqldb/HSQLDBDatabase.java @@ -144,6 +144,7 @@ public class HSQLDBDatabase extends AbstractDatabase { Result result = create() .select( REFERENTIAL_CONSTRAINTS.UNIQUE_CONSTRAINT_NAME, + REFERENTIAL_CONSTRAINTS.UNIQUE_CONSTRAINT_SCHEMA, KEY_COLUMN_USAGE.CONSTRAINT_NAME, KEY_COLUMN_USAGE.TABLE_SCHEMA, KEY_COLUMN_USAGE.TABLE_NAME, @@ -161,17 +162,19 @@ public class HSQLDBDatabase extends AbstractDatabase { .fetch(); for (Record record : result) { - SchemaDefinition schema = getSchema(record.getValue(KEY_COLUMN_USAGE.TABLE_SCHEMA)); + SchemaDefinition foreignKeySchema = getSchema(record.getValue(KEY_COLUMN_USAGE.TABLE_SCHEMA)); + SchemaDefinition uniqueKeySchema = getSchema(record.getValue(REFERENTIAL_CONSTRAINTS.UNIQUE_CONSTRAINT_SCHEMA)); + String foreignKey = record.getValue(KEY_COLUMN_USAGE.CONSTRAINT_NAME); String foreignKeyTable = record.getValue(KEY_COLUMN_USAGE.TABLE_NAME); String foreignKeyColumn = record.getValue(KEY_COLUMN_USAGE.COLUMN_NAME); String uniqueKey = record.getValue(REFERENTIAL_CONSTRAINTS.UNIQUE_CONSTRAINT_NAME); - TableDefinition referencingTable = getTable(schema, foreignKeyTable); + TableDefinition referencingTable = getTable(foreignKeySchema, foreignKeyTable); if (referencingTable != null) { ColumnDefinition referencingColumn = referencingTable.getColumn(foreignKeyColumn); - relations.addForeignKey(foreignKey, uniqueKey, referencingColumn); + relations.addForeignKey(foreignKey, uniqueKey, referencingColumn, uniqueKeySchema); } } } diff --git a/jOOQ-meta/src/main/java/org/jooq/util/ingres/IngresDatabase.java b/jOOQ-meta/src/main/java/org/jooq/util/ingres/IngresDatabase.java index 99b4ccedb7..042be6c901 100644 --- a/jOOQ-meta/src/main/java/org/jooq/util/ingres/IngresDatabase.java +++ b/jOOQ-meta/src/main/java/org/jooq/util/ingres/IngresDatabase.java @@ -149,6 +149,7 @@ public class IngresDatabase extends AbstractDatabase { trim(IirefConstraints.REF_SCHEMA_NAME), trim(IirefConstraints.REF_CONSTRAINT_NAME), trim(IirefConstraints.UNIQUE_CONSTRAINT_NAME), + trim(IirefConstraints.UNIQUE_SCHEMA_NAME), trim(IirefConstraints.REF_TABLE_NAME), trim(IiindexColumns.COLUMN_NAME)) .from(IICONSTRAINTS) @@ -174,17 +175,19 @@ public class IngresDatabase extends AbstractDatabase { .fetch(); for (Record record : result) { - SchemaDefinition schema = getSchema(record.getValue(trim(IirefConstraints.REF_SCHEMA_NAME))); + SchemaDefinition foreignKeySchema = getSchema(record.getValue(trim(IirefConstraints.REF_SCHEMA_NAME))); + SchemaDefinition uniqueKeySchema = getSchema(record.getValue(trim(IirefConstraints.UNIQUE_SCHEMA_NAME))); + String foreignKey = record.getValue(trim(IirefConstraints.REF_CONSTRAINT_NAME)); String foreignKeyTable = record.getValue(trim(IirefConstraints.REF_TABLE_NAME)); String foreignKeyColumn = record.getValue(trim(IiindexColumns.COLUMN_NAME)); String uniqueKey = record.getValue(trim(IirefConstraints.UNIQUE_CONSTRAINT_NAME)); - TableDefinition referencingTable = getTable(schema, foreignKeyTable); + TableDefinition referencingTable = getTable(foreignKeySchema, foreignKeyTable); if (referencingTable != null) { ColumnDefinition referencingColumn = referencingTable.getColumn(foreignKeyColumn); - relations.addForeignKey(foreignKey, uniqueKey, referencingColumn); + relations.addForeignKey(foreignKey, uniqueKey, referencingColumn, uniqueKeySchema); } } } diff --git a/jOOQ-meta/src/main/java/org/jooq/util/mysql/MySQLDatabase.java b/jOOQ-meta/src/main/java/org/jooq/util/mysql/MySQLDatabase.java index 51839fc3a1..4bc98c01e8 100644 --- a/jOOQ-meta/src/main/java/org/jooq/util/mysql/MySQLDatabase.java +++ b/jOOQ-meta/src/main/java/org/jooq/util/mysql/MySQLDatabase.java @@ -141,6 +141,7 @@ public class MySQLDatabase extends AbstractDatabase { ReferentialConstraints.TABLE_NAME, ReferentialConstraints.REFERENCED_TABLE_NAME, ReferentialConstraints.UNIQUE_CONSTRAINT_NAME, + ReferentialConstraints.UNIQUE_CONSTRAINT_SCHEMA, KeyColumnUsage.COLUMN_NAME) .from(REFERENTIAL_CONSTRAINTS) .join(KEY_COLUMN_USAGE) @@ -153,7 +154,8 @@ public class MySQLDatabase extends AbstractDatabase { KeyColumnUsage.ORDINAL_POSITION.asc()) .fetch()) { - SchemaDefinition schema = getSchema(record.getValue(ReferentialConstraints.CONSTRAINT_SCHEMA)); + SchemaDefinition foreignKeySchema = getSchema(record.getValue(ReferentialConstraints.CONSTRAINT_SCHEMA)); + SchemaDefinition uniqueKeySchema = getSchema(record.getValue(ReferentialConstraints.UNIQUE_CONSTRAINT_SCHEMA)); String foreignKey = record.getValue(ReferentialConstraints.CONSTRAINT_NAME); String foreignKeyColumn = record.getValue(KeyColumnUsage.COLUMN_NAME); @@ -161,13 +163,13 @@ public class MySQLDatabase extends AbstractDatabase { String referencedKey = record.getValue(ReferentialConstraints.UNIQUE_CONSTRAINT_NAME); String referencedTableName = record.getValue(ReferentialConstraints.REFERENCED_TABLE_NAME); - TableDefinition foreignKeyTable = getTable(schema, foreignKeyTableName); + TableDefinition foreignKeyTable = getTable(foreignKeySchema, foreignKeyTableName); if (foreignKeyTable != null) { ColumnDefinition column = foreignKeyTable.getColumn(foreignKeyColumn); String key = getKeyName(referencedTableName, referencedKey); - relations.addForeignKey(foreignKey, key, column); + relations.addForeignKey(foreignKey, key, column, uniqueKeySchema); } } } diff --git a/jOOQ-meta/src/main/java/org/jooq/util/oracle/OracleDatabase.java b/jOOQ-meta/src/main/java/org/jooq/util/oracle/OracleDatabase.java index 76f98e1cc7..da6d865c35 100644 --- a/jOOQ-meta/src/main/java/org/jooq/util/oracle/OracleDatabase.java +++ b/jOOQ-meta/src/main/java/org/jooq/util/oracle/OracleDatabase.java @@ -141,7 +141,8 @@ public class OracleDatabase extends AbstractDatabase { ALL_CONS_COLUMNS.CONSTRAINT_NAME, ALL_CONS_COLUMNS.TABLE_NAME, ALL_CONS_COLUMNS.COLUMN_NAME, - ALL_CONSTRAINTS.R_CONSTRAINT_NAME) + ALL_CONSTRAINTS.R_CONSTRAINT_NAME, + ALL_CONSTRAINTS.R_OWNER) .from(ALL_CONSTRAINTS .join(ALL_CONS_COLUMNS) .on(ALL_CONSTRAINTS.OWNER.equal(ALL_CONS_COLUMNS.OWNER)) @@ -156,16 +157,18 @@ public class OracleDatabase extends AbstractDatabase { ALL_CONS_COLUMNS.POSITION) .fetch()) { - SchemaDefinition schema = getSchema(record.getValue(ALL_CONS_COLUMNS.OWNER)); + SchemaDefinition foreignKeySchema = getSchema(record.getValue(ALL_CONS_COLUMNS.OWNER)); + SchemaDefinition uniqueKeySchema = getSchema(record.getValue(ALL_CONSTRAINTS.R_OWNER)); + String foreignKeyName = record.getValue(ALL_CONS_COLUMNS.CONSTRAINT_NAME); String foreignKeyTableName = record.getValue(ALL_CONS_COLUMNS.TABLE_NAME); String foreignKeyColumnName = record.getValue(ALL_CONS_COLUMNS.COLUMN_NAME); String uniqueKeyName = record.getValue(ALL_CONSTRAINTS.R_CONSTRAINT_NAME); - TableDefinition referencingTable = getTable(schema, foreignKeyTableName); + TableDefinition referencingTable = getTable(foreignKeySchema, foreignKeyTableName); if (referencingTable != null) { ColumnDefinition column = referencingTable.getColumn(foreignKeyColumnName); - relations.addForeignKey(foreignKeyName, uniqueKeyName, column); + relations.addForeignKey(foreignKeyName, uniqueKeyName, column, uniqueKeySchema); } } } diff --git a/jOOQ-meta/src/main/java/org/jooq/util/postgres/PostgresDatabase.java b/jOOQ-meta/src/main/java/org/jooq/util/postgres/PostgresDatabase.java index 439dd81122..bfcdd18edb 100644 --- a/jOOQ-meta/src/main/java/org/jooq/util/postgres/PostgresDatabase.java +++ b/jOOQ-meta/src/main/java/org/jooq/util/postgres/PostgresDatabase.java @@ -144,6 +144,7 @@ public class PostgresDatabase extends AbstractDatabase { Result result = create() .select( REFERENTIAL_CONSTRAINTS.UNIQUE_CONSTRAINT_NAME, + REFERENTIAL_CONSTRAINTS.UNIQUE_CONSTRAINT_SCHEMA, KEY_COLUMN_USAGE.CONSTRAINT_NAME, KEY_COLUMN_USAGE.TABLE_SCHEMA, KEY_COLUMN_USAGE.TABLE_NAME, @@ -161,20 +162,22 @@ public class PostgresDatabase extends AbstractDatabase { .fetch(); for (Record record : result) { - SchemaDefinition schema = getSchema(record.getValue(KEY_COLUMN_USAGE.TABLE_SCHEMA)); + SchemaDefinition foreignKeySchema = getSchema(record.getValue(KEY_COLUMN_USAGE.TABLE_SCHEMA)); + SchemaDefinition uniqueKeySchema = getSchema(record.getValue(REFERENTIAL_CONSTRAINTS.UNIQUE_CONSTRAINT_SCHEMA)); + String foreignKey = record.getValue(KEY_COLUMN_USAGE.CONSTRAINT_NAME); String foreignKeyTable = record.getValue(KEY_COLUMN_USAGE.TABLE_NAME); String foreignKeyColumn = record.getValue(KEY_COLUMN_USAGE.COLUMN_NAME); String uniqueKey = record.getValue(REFERENTIAL_CONSTRAINTS.UNIQUE_CONSTRAINT_NAME); - TableDefinition referencingTable = getTable(schema, foreignKeyTable); + TableDefinition referencingTable = getTable(foreignKeySchema, foreignKeyTable); if (referencingTable != null) { // [#986] Add the table name as a namespace prefix to the key // name. In Postgres, foreign key names are only unique per table ColumnDefinition referencingColumn = referencingTable.getColumn(foreignKeyColumn); - relations.addForeignKey(foreignKeyTable + "__" + foreignKey, uniqueKey, referencingColumn); + relations.addForeignKey(foreignKeyTable + "__" + foreignKey, uniqueKey, referencingColumn, uniqueKeySchema); } } } diff --git a/jOOQ-meta/src/main/java/org/jooq/util/sqlserver/SQLServerDatabase.java b/jOOQ-meta/src/main/java/org/jooq/util/sqlserver/SQLServerDatabase.java index f0983e0080..28b99efa8b 100644 --- a/jOOQ-meta/src/main/java/org/jooq/util/sqlserver/SQLServerDatabase.java +++ b/jOOQ-meta/src/main/java/org/jooq/util/sqlserver/SQLServerDatabase.java @@ -143,6 +143,7 @@ public class SQLServerDatabase extends AbstractDatabase { .select( REFERENTIAL_CONSTRAINTS.CONSTRAINT_NAME, REFERENTIAL_CONSTRAINTS.UNIQUE_CONSTRAINT_NAME, + REFERENTIAL_CONSTRAINTS.UNIQUE_CONSTRAINT_SCHEMA, KEY_COLUMN_USAGE.TABLE_SCHEMA, KEY_COLUMN_USAGE.TABLE_NAME, KEY_COLUMN_USAGE.COLUMN_NAME) @@ -159,17 +160,19 @@ public class SQLServerDatabase extends AbstractDatabase { .fetch(); for (Record record : result) { - SchemaDefinition schema = getSchema(record.getValue(KEY_COLUMN_USAGE.TABLE_SCHEMA)); + SchemaDefinition foreignKeySchema = getSchema(record.getValue(KEY_COLUMN_USAGE.TABLE_SCHEMA)); + SchemaDefinition uniqueKeySchema = getSchema(record.getValue(REFERENTIAL_CONSTRAINTS.UNIQUE_CONSTRAINT_SCHEMA)); + String foreignKey = record.getValue(REFERENTIAL_CONSTRAINTS.CONSTRAINT_NAME); String foreignKeyTable = record.getValue(KEY_COLUMN_USAGE.TABLE_NAME); String foreignKeyColumn = record.getValue(KEY_COLUMN_USAGE.COLUMN_NAME); String uniqueKey = record.getValue(REFERENTIAL_CONSTRAINTS.UNIQUE_CONSTRAINT_NAME); - TableDefinition referencingTable = getTable(schema, foreignKeyTable); + TableDefinition referencingTable = getTable(foreignKeySchema, foreignKeyTable); if (referencingTable != null) { ColumnDefinition referencingColumn = referencingTable.getColumn(foreignKeyColumn); - relations.addForeignKey(foreignKey, uniqueKey, referencingColumn); + relations.addForeignKey(foreignKey, uniqueKey, referencingColumn, uniqueKeySchema); } } } diff --git a/jOOQ-meta/src/main/java/org/jooq/util/sybase/SybaseDatabase.java b/jOOQ-meta/src/main/java/org/jooq/util/sybase/SybaseDatabase.java index 68940dccdd..ba6cad6d71 100644 --- a/jOOQ-meta/src/main/java/org/jooq/util/sybase/SybaseDatabase.java +++ b/jOOQ-meta/src/main/java/org/jooq/util/sybase/SybaseDatabase.java @@ -204,7 +204,7 @@ public class SybaseDatabase extends AbstractDatabase { if (foreignKeyTable != null) { ColumnDefinition referencingColumn = foreignKeyTable.getColumn(foreignKeyColumn); - relations.addForeignKey(foreignKey, referencedKey, referencingColumn); + relations.addForeignKey(foreignKey, referencedKey, referencingColumn, getSchema()); } } } diff --git a/jOOQ-test/src/org/jooq/test/oracle/create.sql b/jOOQ-test/src/org/jooq/test/oracle/create.sql index 6cb9185c02..c2f10b496b 100644 --- a/jOOQ-test/src/org/jooq/test/oracle/create.sql +++ b/jOOQ-test/src/org/jooq/test/oracle/create.sql @@ -12,6 +12,8 @@ DROP SEQUENCE s_triggers_sequence/ DROP TRIGGER t_triggers_trigger/ DROP TABLE multi_schema.t_book_sale/ +DROP TABLE multi_schema.t_book/ +DROP TABLE multi_schema.t_author/ DROP TABLE t_triggers/ DROP TABLE t_arrays/ @@ -471,8 +473,9 @@ COMMENT ON COLUMN t_book_to_book_store.book_store_name IS 'The book store name'/ COMMENT ON COLUMN t_book_to_book_store.book_id IS 'The book ID'/ COMMENT ON COLUMN t_book_to_book_store.stock IS 'The number of books on stock'/ -GRANT ALL ON T_BOOK_TO_BOOK_STORE TO MULTI_SCHEMA -/ +GRANT ALL ON T_BOOK_TO_BOOK_STORE TO MULTI_SCHEMA/ +GRANT ALL ON T_BOOK_DETAILS TO MULTI_SCHEMA/ +GRANT ALL ON T_LANGUAGE TO MULTI_SCHEMA/ CREATE TABLE MULTI_SCHEMA.T_BOOK_SALE ( ID NUMBER(7) NOT NULL, @@ -486,6 +489,36 @@ CREATE TABLE MULTI_SCHEMA.T_BOOK_SALE ( ) / +CREATE TABLE MULTI_SCHEMA.t_author ( + id NUMBER(7) NOT NULL, + first_name VARCHAR2(50), + last_name VARCHAR2(50) NOT NULL, + date_of_birth DATE, + year_of_birth NUMBER(7), + address test.u_address_type, + + CONSTRAINT pk_t_author PRIMARY KEY (ID) +) +/ + +CREATE TABLE MULTI_SCHEMA.t_book ( + id NUMBER(7) NOT NULL, + author_id NUMBER(7) NOT NULL, + co_author_id NUMBER(7), + details_id NUMBER(7), + title VARCHAR2(400) NOT NULL, + published_in NUMBER(7) NOT NULL, + language_id NUMBER(7) NOT NULL, + content_text CLOB, + content_pdf BLOB, + + CONSTRAINT pk_t_book PRIMARY KEY (ID), + CONSTRAINT fk_t_book_author_id FOREIGN KEY (AUTHOR_ID) REFERENCES T_AUTHOR(ID) ON DELETE CASCADE, + CONSTRAINT fk_t_book_co_author_id FOREIGN KEY (CO_AUTHOR_ID) REFERENCES T_AUTHOR(ID) ON DELETE CASCADE, + CONSTRAINT fk_t_book_details_id FOREIGN KEY (DETAILS_ID) REFERENCES TEST.T_BOOK_DETAILS(ID) ON DELETE CASCADE, + CONSTRAINT fk_t_book_language_id FOREIGN KEY (LANGUAGE_ID) REFERENCES TEST.T_LANGUAGE(ID) ON DELETE CASCADE +) +/ CREATE TABLE t_arrays ( id NUMBER(7) not null, diff --git a/jOOQ-test/src/org/jooq/test/oracle/generatedclasses/multi_schema/Keys.java b/jOOQ-test/src/org/jooq/test/oracle/generatedclasses/multi_schema/Keys.java index 562651ad55..274346e1c1 100644 --- a/jOOQ-test/src/org/jooq/test/oracle/generatedclasses/multi_schema/Keys.java +++ b/jOOQ-test/src/org/jooq/test/oracle/generatedclasses/multi_schema/Keys.java @@ -14,9 +14,13 @@ public class Keys extends org.jooq.impl.AbstractKeys { // IDENTITY definitions // UNIQUE and PRIMARY KEY definitions + public static final org.jooq.UniqueKey PK_T_AUTHOR = createUniqueKey(org.jooq.test.oracle.generatedclasses.multi_schema.tables.TAuthor.T_AUTHOR, org.jooq.test.oracle.generatedclasses.multi_schema.tables.TAuthor.T_AUTHOR.ID); + public static final org.jooq.UniqueKey PK_T_BOOK = createUniqueKey(org.jooq.test.oracle.generatedclasses.multi_schema.tables.TBook.T_BOOK, org.jooq.test.oracle.generatedclasses.multi_schema.tables.TBook.T_BOOK.ID); public static final org.jooq.UniqueKey PK_T_BOOK_SALE = createUniqueKey(org.jooq.test.oracle.generatedclasses.multi_schema.tables.TBookSale.T_BOOK_SALE, org.jooq.test.oracle.generatedclasses.multi_schema.tables.TBookSale.T_BOOK_SALE.ID); // FOREIGN KEY definitions + public static final org.jooq.ForeignKey FK_T_BOOK_AUTHOR_ID = createForeignKey(PK_T_AUTHOR, org.jooq.test.oracle.generatedclasses.multi_schema.tables.TBook.T_BOOK, org.jooq.test.oracle.generatedclasses.multi_schema.tables.TBook.T_BOOK.AUTHOR_ID); + public static final org.jooq.ForeignKey FK_T_BOOK_CO_AUTHOR_ID = createForeignKey(PK_T_AUTHOR, org.jooq.test.oracle.generatedclasses.multi_schema.tables.TBook.T_BOOK, org.jooq.test.oracle.generatedclasses.multi_schema.tables.TBook.T_BOOK.CO_AUTHOR_ID); public static final org.jooq.ForeignKey FK_T_BOOK_TO_BOOK_STORE = createForeignKey(org.jooq.test.oracle.generatedclasses.test.Keys.PK_B2BS, org.jooq.test.oracle.generatedclasses.multi_schema.tables.TBookSale.T_BOOK_SALE, org.jooq.test.oracle.generatedclasses.multi_schema.tables.TBookSale.T_BOOK_SALE.BOOK_STORE_NAME, org.jooq.test.oracle.generatedclasses.multi_schema.tables.TBookSale.T_BOOK_SALE.BOOK_ID); /** diff --git a/jOOQ-test/src/org/jooq/test/oracle/generatedclasses/multi_schema/MultiSchema.java b/jOOQ-test/src/org/jooq/test/oracle/generatedclasses/multi_schema/MultiSchema.java index 2c44ffca13..f1865f15da 100644 --- a/jOOQ-test/src/org/jooq/test/oracle/generatedclasses/multi_schema/MultiSchema.java +++ b/jOOQ-test/src/org/jooq/test/oracle/generatedclasses/multi_schema/MultiSchema.java @@ -8,7 +8,7 @@ package org.jooq.test.oracle.generatedclasses.multi_schema; */ public class MultiSchema extends org.jooq.impl.SchemaImpl { - private static final long serialVersionUID = -540234768; + private static final long serialVersionUID = -1472774415; /** * The singleton instance of MULTI_SCHEMA @@ -24,6 +24,9 @@ public class MultiSchema extends org.jooq.impl.SchemaImpl { @Override public final java.util.List> getTables() { - return java.util.Arrays.>asList(org.jooq.test.oracle.generatedclasses.multi_schema.tables.TBookSale.T_BOOK_SALE); + return java.util.Arrays.>asList( + org.jooq.test.oracle.generatedclasses.multi_schema.tables.TAuthor.T_AUTHOR, + org.jooq.test.oracle.generatedclasses.multi_schema.tables.TBook.T_BOOK, + org.jooq.test.oracle.generatedclasses.multi_schema.tables.TBookSale.T_BOOK_SALE); } } diff --git a/jOOQ-test/src/org/jooq/test/oracle/generatedclasses/multi_schema/Tables.java b/jOOQ-test/src/org/jooq/test/oracle/generatedclasses/multi_schema/Tables.java index 86053b7fdf..eb7e5b8e48 100644 --- a/jOOQ-test/src/org/jooq/test/oracle/generatedclasses/multi_schema/Tables.java +++ b/jOOQ-test/src/org/jooq/test/oracle/generatedclasses/multi_schema/Tables.java @@ -10,6 +10,16 @@ package org.jooq.test.oracle.generatedclasses.multi_schema; */ public final class Tables { + /** + * The table MULTI_SCHEMA.T_AUTHOR + */ + public static org.jooq.test.oracle.generatedclasses.multi_schema.tables.TAuthor T_AUTHOR = org.jooq.test.oracle.generatedclasses.multi_schema.tables.TAuthor.T_AUTHOR; + + /** + * The table MULTI_SCHEMA.T_BOOK + */ + public static org.jooq.test.oracle.generatedclasses.multi_schema.tables.TBook T_BOOK = org.jooq.test.oracle.generatedclasses.multi_schema.tables.TBook.T_BOOK; + /** * The table MULTI_SCHEMA.T_BOOK_SALE */ diff --git a/jOOQ-test/src/org/jooq/test/oracle/generatedclasses/multi_schema/tables/TAuthor.java b/jOOQ-test/src/org/jooq/test/oracle/generatedclasses/multi_schema/tables/TAuthor.java new file mode 100644 index 0000000000..6287269b51 --- /dev/null +++ b/jOOQ-test/src/org/jooq/test/oracle/generatedclasses/multi_schema/tables/TAuthor.java @@ -0,0 +1,95 @@ +/** + * This class is generated by jOOQ + */ +package org.jooq.test.oracle.generatedclasses.multi_schema.tables; + +/** + * This class is generated by jOOQ. + */ +public class TAuthor extends org.jooq.impl.UpdatableTableImpl { + + private static final long serialVersionUID = 1944987199; + + /** + * The singleton instance of T_AUTHOR + */ + public static final org.jooq.test.oracle.generatedclasses.multi_schema.tables.TAuthor T_AUTHOR = new org.jooq.test.oracle.generatedclasses.multi_schema.tables.TAuthor(); + + /** + * The class holding records for this type + */ + private static final java.lang.Class __RECORD_TYPE = org.jooq.test.oracle.generatedclasses.multi_schema.tables.records.TAuthorRecord.class; + + /** + * The class holding records for this type + */ + @Override + public java.lang.Class getRecordType() { + return __RECORD_TYPE; + } + + /** + * An uncommented item + * + * PRIMARY KEY + */ + public final org.jooq.TableField ID = createField("ID", org.jooq.impl.SQLDataType.INTEGER, this); + + /** + * An uncommented item + */ + public final org.jooq.TableField FIRST_NAME = createField("FIRST_NAME", org.jooq.impl.SQLDataType.VARCHAR, this); + + /** + * An uncommented item + */ + public final org.jooq.TableField LAST_NAME = createField("LAST_NAME", org.jooq.impl.SQLDataType.VARCHAR, this); + + /** + * An uncommented item + */ + public final org.jooq.TableField DATE_OF_BIRTH = createField("DATE_OF_BIRTH", org.jooq.impl.SQLDataType.DATE, this); + + /** + * An uncommented item + */ + public final org.jooq.TableField YEAR_OF_BIRTH = createField("YEAR_OF_BIRTH", org.jooq.impl.SQLDataType.INTEGER, this); + + /** + * An uncommented item + * + * The SQL type of this item (U_ADDRESS_TYPE) could not be mapped.
+ * Deserialising this field might not work! + */ + public final org.jooq.TableField ADDRESS = createField("ADDRESS", org.jooq.util.oracle.OracleDataType.getDefaultDataType("U_ADDRESS_TYPE"), this); + + /** + * No further instances allowed + */ + private TAuthor() { + super("T_AUTHOR", org.jooq.test.oracle.generatedclasses.multi_schema.MultiSchema.MULTI_SCHEMA); + } + + /** + * No further instances allowed + */ + private TAuthor(java.lang.String alias) { + super(alias, org.jooq.test.oracle.generatedclasses.multi_schema.MultiSchema.MULTI_SCHEMA, org.jooq.test.oracle.generatedclasses.multi_schema.tables.TAuthor.T_AUTHOR); + } + + @Override + public org.jooq.UniqueKey getMainKey() { + return org.jooq.test.oracle.generatedclasses.multi_schema.Keys.PK_T_AUTHOR; + } + + @Override + @SuppressWarnings("unchecked") + public java.util.List> getKeys() { + return java.util.Arrays.>asList(org.jooq.test.oracle.generatedclasses.multi_schema.Keys.PK_T_AUTHOR); + } + + @Override + public org.jooq.test.oracle.generatedclasses.multi_schema.tables.TAuthor as(java.lang.String alias) { + return new org.jooq.test.oracle.generatedclasses.multi_schema.tables.TAuthor(alias); + } +} diff --git a/jOOQ-test/src/org/jooq/test/oracle/generatedclasses/multi_schema/tables/TBook.java b/jOOQ-test/src/org/jooq/test/oracle/generatedclasses/multi_schema/tables/TBook.java new file mode 100644 index 0000000000..11144f79fb --- /dev/null +++ b/jOOQ-test/src/org/jooq/test/oracle/generatedclasses/multi_schema/tables/TBook.java @@ -0,0 +1,128 @@ +/** + * This class is generated by jOOQ + */ +package org.jooq.test.oracle.generatedclasses.multi_schema.tables; + +/** + * This class is generated by jOOQ. + */ +public class TBook extends org.jooq.impl.UpdatableTableImpl { + + private static final long serialVersionUID = 1346695844; + + /** + * The singleton instance of T_BOOK + */ + public static final org.jooq.test.oracle.generatedclasses.multi_schema.tables.TBook T_BOOK = new org.jooq.test.oracle.generatedclasses.multi_schema.tables.TBook(); + + /** + * The class holding records for this type + */ + private static final java.lang.Class __RECORD_TYPE = org.jooq.test.oracle.generatedclasses.multi_schema.tables.records.TBookRecord.class; + + /** + * The class holding records for this type + */ + @Override + public java.lang.Class getRecordType() { + return __RECORD_TYPE; + } + + /** + * An uncommented item + * + * PRIMARY KEY + */ + public final org.jooq.TableField ID = createField("ID", org.jooq.impl.SQLDataType.INTEGER, this); + + /** + * An uncommented item + *

+ *

+	 * FOREIGN KEY [MULTI_SCHEMA.T_BOOK.AUTHOR_ID]
+	 * REFERENCES T_AUTHOR [MULTI_SCHEMA.T_AUTHOR.ID]
+	 * 
+ */ + public final org.jooq.TableField AUTHOR_ID = createField("AUTHOR_ID", org.jooq.impl.SQLDataType.INTEGER, this); + + /** + * An uncommented item + *

+ *

+	 * FOREIGN KEY [MULTI_SCHEMA.T_BOOK.CO_AUTHOR_ID]
+	 * REFERENCES T_AUTHOR [MULTI_SCHEMA.T_AUTHOR.ID]
+	 * 
+ */ + public final org.jooq.TableField CO_AUTHOR_ID = createField("CO_AUTHOR_ID", org.jooq.impl.SQLDataType.INTEGER, this); + + /** + * An uncommented item + */ + public final org.jooq.TableField DETAILS_ID = createField("DETAILS_ID", org.jooq.impl.SQLDataType.INTEGER, this); + + /** + * An uncommented item + */ + public final org.jooq.TableField TITLE = createField("TITLE", org.jooq.impl.SQLDataType.VARCHAR, this); + + /** + * An uncommented item + */ + public final org.jooq.TableField PUBLISHED_IN = createField("PUBLISHED_IN", org.jooq.impl.SQLDataType.INTEGER, this); + + /** + * An uncommented item + *

+ *

+	 * FOREIGN KEY [MULTI_SCHEMA.T_BOOK.LANGUAGE_ID]
+	 * REFERENCES T_LANGUAGE [TEST.T_LANGUAGE.ID]
+	 * 
+ */ + public final org.jooq.TableField LANGUAGE_ID = createField("LANGUAGE_ID", org.jooq.impl.SQLDataType.INTEGER.asMasterDataType(org.jooq.test.oracle.generatedclasses.test.enums.TLanguage.class), this); + + /** + * An uncommented item + */ + public final org.jooq.TableField CONTENT_TEXT = createField("CONTENT_TEXT", org.jooq.impl.SQLDataType.CLOB, this); + + /** + * An uncommented item + */ + public final org.jooq.TableField CONTENT_PDF = createField("CONTENT_PDF", org.jooq.impl.SQLDataType.BLOB, this); + + /** + * No further instances allowed + */ + private TBook() { + super("T_BOOK", org.jooq.test.oracle.generatedclasses.multi_schema.MultiSchema.MULTI_SCHEMA); + } + + /** + * No further instances allowed + */ + private TBook(java.lang.String alias) { + super(alias, org.jooq.test.oracle.generatedclasses.multi_schema.MultiSchema.MULTI_SCHEMA, org.jooq.test.oracle.generatedclasses.multi_schema.tables.TBook.T_BOOK); + } + + @Override + public org.jooq.UniqueKey getMainKey() { + return org.jooq.test.oracle.generatedclasses.multi_schema.Keys.PK_T_BOOK; + } + + @Override + @SuppressWarnings("unchecked") + public java.util.List> getKeys() { + return java.util.Arrays.>asList(org.jooq.test.oracle.generatedclasses.multi_schema.Keys.PK_T_BOOK); + } + + @Override + @SuppressWarnings("unchecked") + public java.util.List> getReferences() { + return java.util.Arrays.>asList(org.jooq.test.oracle.generatedclasses.multi_schema.Keys.FK_T_BOOK_AUTHOR_ID, org.jooq.test.oracle.generatedclasses.multi_schema.Keys.FK_T_BOOK_CO_AUTHOR_ID); + } + + @Override + public org.jooq.test.oracle.generatedclasses.multi_schema.tables.TBook as(java.lang.String alias) { + return new org.jooq.test.oracle.generatedclasses.multi_schema.tables.TBook(alias); + } +} diff --git a/jOOQ-test/src/org/jooq/test/oracle/generatedclasses/multi_schema/tables/records/TAuthorRecord.java b/jOOQ-test/src/org/jooq/test/oracle/generatedclasses/multi_schema/tables/records/TAuthorRecord.java new file mode 100644 index 0000000000..09663cba0a --- /dev/null +++ b/jOOQ-test/src/org/jooq/test/oracle/generatedclasses/multi_schema/tables/records/TAuthorRecord.java @@ -0,0 +1,137 @@ +/** + * This class is generated by jOOQ + */ +package org.jooq.test.oracle.generatedclasses.multi_schema.tables.records; + +/** + * This class is generated by jOOQ. + */ +public class TAuthorRecord extends org.jooq.impl.UpdatableRecordImpl { + + private static final long serialVersionUID = -1384020730; + + /** + * An uncommented item + * + * PRIMARY KEY + */ + public void setId(java.lang.Integer value) { + setValue(org.jooq.test.oracle.generatedclasses.multi_schema.tables.TAuthor.T_AUTHOR.ID, value); + } + + /** + * An uncommented item + * + * PRIMARY KEY + */ + public java.lang.Integer getId() { + return getValue(org.jooq.test.oracle.generatedclasses.multi_schema.tables.TAuthor.T_AUTHOR.ID); + } + + /** + * An uncommented item + * + * PRIMARY KEY + */ + public java.util.List fetchTBookListByAuthorId() { + return create() + .selectFrom(org.jooq.test.oracle.generatedclasses.multi_schema.tables.TBook.T_BOOK) + .where(org.jooq.test.oracle.generatedclasses.multi_schema.tables.TBook.T_BOOK.AUTHOR_ID.equal(getValue(org.jooq.test.oracle.generatedclasses.multi_schema.tables.TAuthor.T_AUTHOR.ID))) + .fetch(); + } + + /** + * An uncommented item + * + * PRIMARY KEY + */ + public java.util.List fetchTBookListByCoAuthorId() { + return create() + .selectFrom(org.jooq.test.oracle.generatedclasses.multi_schema.tables.TBook.T_BOOK) + .where(org.jooq.test.oracle.generatedclasses.multi_schema.tables.TBook.T_BOOK.CO_AUTHOR_ID.equal(getValue(org.jooq.test.oracle.generatedclasses.multi_schema.tables.TAuthor.T_AUTHOR.ID))) + .fetch(); + } + + /** + * An uncommented item + */ + public void setFirstName(java.lang.String value) { + setValue(org.jooq.test.oracle.generatedclasses.multi_schema.tables.TAuthor.T_AUTHOR.FIRST_NAME, value); + } + + /** + * An uncommented item + */ + public java.lang.String getFirstName() { + return getValue(org.jooq.test.oracle.generatedclasses.multi_schema.tables.TAuthor.T_AUTHOR.FIRST_NAME); + } + + /** + * An uncommented item + */ + public void setLastName(java.lang.String value) { + setValue(org.jooq.test.oracle.generatedclasses.multi_schema.tables.TAuthor.T_AUTHOR.LAST_NAME, value); + } + + /** + * An uncommented item + */ + public java.lang.String getLastName() { + return getValue(org.jooq.test.oracle.generatedclasses.multi_schema.tables.TAuthor.T_AUTHOR.LAST_NAME); + } + + /** + * An uncommented item + */ + public void setDateOfBirth(java.sql.Date value) { + setValue(org.jooq.test.oracle.generatedclasses.multi_schema.tables.TAuthor.T_AUTHOR.DATE_OF_BIRTH, value); + } + + /** + * An uncommented item + */ + public java.sql.Date getDateOfBirth() { + return getValue(org.jooq.test.oracle.generatedclasses.multi_schema.tables.TAuthor.T_AUTHOR.DATE_OF_BIRTH); + } + + /** + * An uncommented item + */ + public void setYearOfBirth(java.lang.Integer value) { + setValue(org.jooq.test.oracle.generatedclasses.multi_schema.tables.TAuthor.T_AUTHOR.YEAR_OF_BIRTH, value); + } + + /** + * An uncommented item + */ + public java.lang.Integer getYearOfBirth() { + return getValue(org.jooq.test.oracle.generatedclasses.multi_schema.tables.TAuthor.T_AUTHOR.YEAR_OF_BIRTH); + } + + /** + * An uncommented item + * + * The SQL type of this item (U_ADDRESS_TYPE) could not be mapped.
+ * Deserialising this field might not work! + */ + public void setAddress(java.lang.Object value) { + setValue(org.jooq.test.oracle.generatedclasses.multi_schema.tables.TAuthor.T_AUTHOR.ADDRESS, value); + } + + /** + * An uncommented item + * + * The SQL type of this item (U_ADDRESS_TYPE) could not be mapped.
+ * Deserialising this field might not work! + */ + public java.lang.Object getAddress() { + return getValue(org.jooq.test.oracle.generatedclasses.multi_schema.tables.TAuthor.T_AUTHOR.ADDRESS); + } + + /** + * Create a detached TAuthorRecord + */ + public TAuthorRecord() { + super(org.jooq.test.oracle.generatedclasses.multi_schema.tables.TAuthor.T_AUTHOR); + } +} diff --git a/jOOQ-test/src/org/jooq/test/oracle/generatedclasses/multi_schema/tables/records/TBookRecord.java b/jOOQ-test/src/org/jooq/test/oracle/generatedclasses/multi_schema/tables/records/TBookRecord.java new file mode 100644 index 0000000000..1b70334576 --- /dev/null +++ b/jOOQ-test/src/org/jooq/test/oracle/generatedclasses/multi_schema/tables/records/TBookRecord.java @@ -0,0 +1,209 @@ +/** + * This class is generated by jOOQ + */ +package org.jooq.test.oracle.generatedclasses.multi_schema.tables.records; + +/** + * This class is generated by jOOQ. + */ +public class TBookRecord extends org.jooq.impl.UpdatableRecordImpl { + + private static final long serialVersionUID = -1667731665; + + /** + * An uncommented item + * + * PRIMARY KEY + */ + public void setId(java.lang.Integer value) { + setValue(org.jooq.test.oracle.generatedclasses.multi_schema.tables.TBook.T_BOOK.ID, value); + } + + /** + * An uncommented item + * + * PRIMARY KEY + */ + public java.lang.Integer getId() { + return getValue(org.jooq.test.oracle.generatedclasses.multi_schema.tables.TBook.T_BOOK.ID); + } + + /** + * An uncommented item + *

+ *

+	 * FOREIGN KEY [MULTI_SCHEMA.T_BOOK.AUTHOR_ID]
+	 * REFERENCES T_AUTHOR [MULTI_SCHEMA.T_AUTHOR.ID]
+	 * 
+ */ + public void setAuthorId(java.lang.Integer value) { + setValue(org.jooq.test.oracle.generatedclasses.multi_schema.tables.TBook.T_BOOK.AUTHOR_ID, value); + } + + /** + * An uncommented item + *

+ *

+	 * FOREIGN KEY [MULTI_SCHEMA.T_BOOK.AUTHOR_ID]
+	 * REFERENCES T_AUTHOR [MULTI_SCHEMA.T_AUTHOR.ID]
+	 * 
+ */ + public java.lang.Integer getAuthorId() { + return getValue(org.jooq.test.oracle.generatedclasses.multi_schema.tables.TBook.T_BOOK.AUTHOR_ID); + } + + /** + * An uncommented item + *

+ *

+	 * FOREIGN KEY [MULTI_SCHEMA.T_BOOK.AUTHOR_ID]
+	 * REFERENCES T_AUTHOR [MULTI_SCHEMA.T_AUTHOR.ID]
+	 * 
+ */ + public org.jooq.test.oracle.generatedclasses.multi_schema.tables.records.TAuthorRecord fetchTAuthorByAuthorId() { + return create() + .selectFrom(org.jooq.test.oracle.generatedclasses.multi_schema.tables.TAuthor.T_AUTHOR) + .where(org.jooq.test.oracle.generatedclasses.multi_schema.tables.TAuthor.T_AUTHOR.ID.equal(getValue(org.jooq.test.oracle.generatedclasses.multi_schema.tables.TBook.T_BOOK.AUTHOR_ID))) + .fetchOne(); + } + + /** + * An uncommented item + *

+ *

+	 * FOREIGN KEY [MULTI_SCHEMA.T_BOOK.CO_AUTHOR_ID]
+	 * REFERENCES T_AUTHOR [MULTI_SCHEMA.T_AUTHOR.ID]
+	 * 
+ */ + public void setCoAuthorId(java.lang.Integer value) { + setValue(org.jooq.test.oracle.generatedclasses.multi_schema.tables.TBook.T_BOOK.CO_AUTHOR_ID, value); + } + + /** + * An uncommented item + *

+ *

+	 * FOREIGN KEY [MULTI_SCHEMA.T_BOOK.CO_AUTHOR_ID]
+	 * REFERENCES T_AUTHOR [MULTI_SCHEMA.T_AUTHOR.ID]
+	 * 
+ */ + public java.lang.Integer getCoAuthorId() { + return getValue(org.jooq.test.oracle.generatedclasses.multi_schema.tables.TBook.T_BOOK.CO_AUTHOR_ID); + } + + /** + * An uncommented item + *

+ *

+	 * FOREIGN KEY [MULTI_SCHEMA.T_BOOK.CO_AUTHOR_ID]
+	 * REFERENCES T_AUTHOR [MULTI_SCHEMA.T_AUTHOR.ID]
+	 * 
+ */ + public org.jooq.test.oracle.generatedclasses.multi_schema.tables.records.TAuthorRecord fetchTAuthorByCoAuthorId() { + return create() + .selectFrom(org.jooq.test.oracle.generatedclasses.multi_schema.tables.TAuthor.T_AUTHOR) + .where(org.jooq.test.oracle.generatedclasses.multi_schema.tables.TAuthor.T_AUTHOR.ID.equal(getValue(org.jooq.test.oracle.generatedclasses.multi_schema.tables.TBook.T_BOOK.CO_AUTHOR_ID))) + .fetchOne(); + } + + /** + * An uncommented item + */ + public void setDetailsId(java.lang.Integer value) { + setValue(org.jooq.test.oracle.generatedclasses.multi_schema.tables.TBook.T_BOOK.DETAILS_ID, value); + } + + /** + * An uncommented item + */ + public java.lang.Integer getDetailsId() { + return getValue(org.jooq.test.oracle.generatedclasses.multi_schema.tables.TBook.T_BOOK.DETAILS_ID); + } + + /** + * An uncommented item + */ + public void setTitle(java.lang.String value) { + setValue(org.jooq.test.oracle.generatedclasses.multi_schema.tables.TBook.T_BOOK.TITLE, value); + } + + /** + * An uncommented item + */ + public java.lang.String getTitle() { + return getValue(org.jooq.test.oracle.generatedclasses.multi_schema.tables.TBook.T_BOOK.TITLE); + } + + /** + * An uncommented item + */ + public void setPublishedIn(java.lang.Integer value) { + setValue(org.jooq.test.oracle.generatedclasses.multi_schema.tables.TBook.T_BOOK.PUBLISHED_IN, value); + } + + /** + * An uncommented item + */ + public java.lang.Integer getPublishedIn() { + return getValue(org.jooq.test.oracle.generatedclasses.multi_schema.tables.TBook.T_BOOK.PUBLISHED_IN); + } + + /** + * An uncommented item + *

+ *

+	 * FOREIGN KEY [MULTI_SCHEMA.T_BOOK.LANGUAGE_ID]
+	 * REFERENCES T_LANGUAGE [TEST.T_LANGUAGE.ID]
+	 * 
+ */ + public void setLanguageId(org.jooq.test.oracle.generatedclasses.test.enums.TLanguage value) { + setValue(org.jooq.test.oracle.generatedclasses.multi_schema.tables.TBook.T_BOOK.LANGUAGE_ID, value); + } + + /** + * An uncommented item + *

+ *

+	 * FOREIGN KEY [MULTI_SCHEMA.T_BOOK.LANGUAGE_ID]
+	 * REFERENCES T_LANGUAGE [TEST.T_LANGUAGE.ID]
+	 * 
+ */ + public org.jooq.test.oracle.generatedclasses.test.enums.TLanguage getLanguageId() { + return getValue(org.jooq.test.oracle.generatedclasses.multi_schema.tables.TBook.T_BOOK.LANGUAGE_ID); + } + + /** + * An uncommented item + */ + public void setContentText(java.lang.String value) { + setValue(org.jooq.test.oracle.generatedclasses.multi_schema.tables.TBook.T_BOOK.CONTENT_TEXT, value); + } + + /** + * An uncommented item + */ + public java.lang.String getContentText() { + return getValue(org.jooq.test.oracle.generatedclasses.multi_schema.tables.TBook.T_BOOK.CONTENT_TEXT); + } + + /** + * An uncommented item + */ + public void setContentPdf(byte[] value) { + setValue(org.jooq.test.oracle.generatedclasses.multi_schema.tables.TBook.T_BOOK.CONTENT_PDF, value); + } + + /** + * An uncommented item + */ + public byte[] getContentPdf() { + return getValue(org.jooq.test.oracle.generatedclasses.multi_schema.tables.TBook.T_BOOK.CONTENT_PDF); + } + + /** + * Create a detached TBookRecord + */ + public TBookRecord() { + super(org.jooq.test.oracle.generatedclasses.multi_schema.tables.TBook.T_BOOK); + } +}