【问题标题】:Generate JOOQ Schema from file从文件生成 JOOQ Schema
【发布时间】:2018-01-05 21:18:26
【问题描述】:

可以在没有数据库连接的情况下使用 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>

【问题讨论】:

    标签: java jooq


    【解决方案1】:

    是的,你可以做这样的事情,虽然不是你期望的方式。一方面,jOOQ 不允许您以这种方式解析 SQL 语句和派生模式元信息。对于所有当前支持的 20 个 RDBMS,这将是一种复杂的实现方式。

    但是,您有 2 个选择:

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

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

    此博客文章中描述了一种类似的方法,其中 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

    【讨论】:

      猜你喜欢
      • 2010-12-15
      • 2018-07-17
      • 1970-01-01
      • 2015-03-07
      • 2015-09-16
      • 2016-01-28
      • 2011-05-08
      • 2021-04-28
      • 2019-10-10
      相关资源
      最近更新 更多