合成外键
适用于 ❌ 开源版 ✅ Express 版 ✅ 专业版 ✅ 企业版
jOOQ 的代码生成器可以识别由数据库声明和报告的外键。但是,一些数据库不会报告所有键,或者某些表未启用键,或者有时视图是底层表的 1:1 表示,但它不公开键信息。在这些情况下,此正则表达式可以匹配用户希望“假装”为外键一部分的所有列。如果需要合成复合外键,则正则表达式应匹配该表中属于外键的所有列。例如,合成复合外键由 SCHEMA.TABLE
表中的 (COLUMN1, COLUMN2)
组成
XML(独立和 Maven)
编程方式
Gradle (Kotlin)
Gradle (Groovy)
Gradle(第三方)
<configuration> <generator> <database> <syntheticObjects> <foreignKeys> <foreignKey> <!-- Optional name of the foreign key, if tables matches only a single table. --> <!-- This is useful to disambiguate navigational methods and implicit join methods! --> <name>FK_TABLE</name> <!-- Optional regular expression matching all tables that have this foreign key. --> <tables>SCHEMA\.TABLE</tables> <!-- List multiple fields in the key order --> <fields> <field>COLUMN1</field> <field>COLUMN2</field> </fields> <!-- Specify the table that is being referenced by this foreign key --> <referencedTable>SCHEMA\.OTHER_TABLE</referencedTable> <!-- Optional: The primary or unique key columns that are being referenced --> <referencedFields> <field>COLUMN1</field> <field>COLUMN2</field> </referencedFields> <!-- Optional: reference a primary or unique key by name --> <!-- If the referenced fields or key are not specified, the referencedTable's primary key is used --> <referencedKey>UK_TABLE</referencedKey> </foreignKey> </foreignKeys> </syntheticObjects> </database> </generator> </configuration>
有关更多详细信息,请参见 配置 XSD、独立代码生成 和 maven 代码生成。
new org.jooq.meta.jaxb.Configuration() .withGenerator(new Generator() .withDatabase(new Database() .withSyntheticObjects(new SyntheticObjectsType() .withForeignKeys( new SyntheticForeignKeyType() // Optional name of the foreign key, if tables matches only a single table. .withName("FK_TABLE") // Optional regular expression matching all tables that have this foreign key. .withTables("SCHEMA\\.TABLE") // List multiple fields in the key order .withFields( "COLUMN1", "COLUMN2" ) // Specify the table that is being referenced by this foreign key .withReferencedTable("SCHEMA\\.OTHER_TABLE") // Optional: The primary or unique key columns that are being referenced .withReferencedFields(new () .withField("COLUMN1") .withField("COLUMN2") ) // Optional: reference a primary or unique key by name .withReferencedKey("UK_TABLE") ) ) ) )
import org.jooq.meta.jaxb.* configuration { generator { database { syntheticObjects { foreignKeys { foreignKey { // Optional name of the foreign key, if tables matches only a single table. name = "FK_TABLE" // Optional regular expression matching all tables that have this foreign key. tables = "SCHEMA\\.TABLE" // List multiple fields in the key order fields { field = "COLUMN1" field = "COLUMN2" } // Specify the table that is being referenced by this foreign key referencedTable = "SCHEMA\\.OTHER_TABLE" // Optional: The primary or unique key columns that are being referenced referencedFields { field = "COLUMN1" field = "COLUMN2" } // Optional: reference a primary or unique key by name referencedKey = "UK_TABLE" } } } } } }
有关更多详细信息,请参见 配置 XSD 和 gradle 代码生成。
configuration { generator { database { syntheticObjects { foreignKeys { foreignKey { // Optional name of the foreign key, if tables matches only a single table. name = "FK_TABLE" // Optional regular expression matching all tables that have this foreign key. tables = "SCHEMA\\.TABLE" // List multiple fields in the key order fields { field = "COLUMN1" field = "COLUMN2" } // Specify the table that is being referenced by this foreign key referencedTable = "SCHEMA\\.OTHER_TABLE" // Optional: The primary or unique key columns that are being referenced referencedFields { field = "COLUMN1" field = "COLUMN2" } // Optional: reference a primary or unique key by name referencedKey = "UK_TABLE" } } } } } }
有关更多详细信息,请参见 配置 XSD 和 gradle 代码生成。
// The jOOQ-codegen-gradle plugin has been introduced in version 3.19. // Please use the official plugin instead of the third party plugin that was recommended before.
一如既往,当使用正则表达式时,它们是具有默认标志的正则表达式。
反馈
您对此页面有任何反馈吗?我们很乐意听到!