从文件生成 JOOQ 架构

sha*_*ark 5 java jooq

是否可以在没有数据库连接的情况下使用 JOOQ 从 sql 文件生成 Java 类?我尝试指定 inputSchema 标记,但出现异常:

WARNING: SQL exception            : Exception while executing meta query: Cannot execute query. No Connection configured
Run Code Online (Sandbox Code Playgroud)

我的配置如下:

<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>
Run Code Online (Sandbox Code Playgroud)

Luk*_*der 4

是的,您可以做这样的事情,尽管不是您期望的方式。首先,jOOQ 不允许您以这种方式解析 SQL 语句并导出模式元信息。对于当前所有 20 个受支持的 RDBMS 来说,实施起来会非常复杂。

但是,您有 2 个选择:

1. 在代码生成之前运行 SQL 文件

如果您的 SQL 文件与数据库供应商足够无关,您可以在嵌入式数据库(如H2 )中运行该文件,然后从该数据库运行代码生成器。

这篇博客文章中描述了类似的方法,其中 JPA 注释的 Java 文件用于使用 Hibernate 生成这样的模式,然后运行 ​​jOOQ 生成器: http://vladmihalcea.com/jooq-facts-from-jpa-annotations- to-jooq-表映射

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>
Run Code Online (Sandbox Code Playgroud)

要输入的 XML 文件的 XSD 架构XMLDatabase可以在这里找到: http: //www.jooq.org/xsd/jooq-meta-3.5.4.xsd

另请参阅: http ://www.jooq.org/doc/latest/manual/code- Generation/codegen-configuration