从文件生成 JOOQ 模式
Generate JOOQ Schema from file
可以在没有数据库连接的情况下使用 JOOQ 从 sql 文件生成 Java 类 吗?
我试图指定 inputSchema 标签,但出现异常:
WARNING: SQL exception : Exception while executing meta query: Cannot execute query. No Connection configured
我的配置是这样的:
<configuration>
<generator>
<database>
<name>org.jooq.util.postgres.PostgresDatabase</name>
<inputSchema>filesystem:src/main/resources/schema.sql</inputSchema>
<includes>.*</includes>
<outputSchemaToDefault>true</outputSchemaToDefault>
</database>
<target>
<packageName>pckg.some</packageName>
<directory>target/generated-sources/jooq</directory>
</target>
</generator>
</configuration>
是的,你可以做这样的事情,虽然不是你期望的那样。一方面,jOOQ 不允许您以这种方式解析 SQL 语句和派生模式元信息。对于所有当前支持的 20 个 RDBMS,这将是一种复杂的实现方式。
但是,您有 2 个选择:
1。 运行 代码生成之前的 SQL 文件
如果您的 SQL 文件与数据库供应商完全无关,您可以 运行 嵌入式数据库中的文件,例如 H2,然后 运行 来自那个数据库。
此博客 post 中描述了类似的方法,其中 JPA 注释 Java 文件用于使用 Hibernate 生成此类模式,然后 运行 jOOQ 生成器:
http://vladmihalcea.com/jooq-facts-from-jpa-annotations-to-jooq-table-mappings
2。使用中介 XML 文件
jOOQ 支持从 XML 文件(或其他元数据源)加载模式元信息。来自手册:
<!-- This value can be used to reverse-engineer standard jOOQ-meta XML formats
org.jooq.util.xml.XMLDatabase
You can also provide your own org.jooq.util.Database implementation
here, if your database is currently not supported -->
<name>org.jooq.util.oracle.OracleDatabase</name>
要输入 XMLDatabase
的 XML 文件的 XSD 架构可在此处找到:
http://www.jooq.org/xsd/jooq-meta-3.5.4.xsd
另请参阅:
http://www.jooq.org/doc/latest/manual/code-generation/codegen-configuration
可以在没有数据库连接的情况下使用 JOOQ 从 sql 文件生成 Java 类 吗? 我试图指定 inputSchema 标签,但出现异常:
WARNING: SQL exception : Exception while executing meta query: Cannot execute query. No Connection configured
我的配置是这样的:
<configuration>
<generator>
<database>
<name>org.jooq.util.postgres.PostgresDatabase</name>
<inputSchema>filesystem:src/main/resources/schema.sql</inputSchema>
<includes>.*</includes>
<outputSchemaToDefault>true</outputSchemaToDefault>
</database>
<target>
<packageName>pckg.some</packageName>
<directory>target/generated-sources/jooq</directory>
</target>
</generator>
</configuration>
是的,你可以做这样的事情,虽然不是你期望的那样。一方面,jOOQ 不允许您以这种方式解析 SQL 语句和派生模式元信息。对于所有当前支持的 20 个 RDBMS,这将是一种复杂的实现方式。
但是,您有 2 个选择:
1。 运行 代码生成之前的 SQL 文件
如果您的 SQL 文件与数据库供应商完全无关,您可以 运行 嵌入式数据库中的文件,例如 H2,然后 运行 来自那个数据库。
此博客 post 中描述了类似的方法,其中 JPA 注释 Java 文件用于使用 Hibernate 生成此类模式,然后 运行 jOOQ 生成器: http://vladmihalcea.com/jooq-facts-from-jpa-annotations-to-jooq-table-mappings
2。使用中介 XML 文件
jOOQ 支持从 XML 文件(或其他元数据源)加载模式元信息。来自手册:
<!-- This value can be used to reverse-engineer standard jOOQ-meta XML formats
org.jooq.util.xml.XMLDatabase
You can also provide your own org.jooq.util.Database implementation
here, if your database is currently not supported -->
<name>org.jooq.util.oracle.OracleDatabase</name>
要输入 XMLDatabase
的 XML 文件的 XSD 架构可在此处找到:
http://www.jooq.org/xsd/jooq-meta-3.5.4.xsd
另请参阅: http://www.jooq.org/doc/latest/manual/code-generation/codegen-configuration