是否可以在没有数据库连接的情况下使用 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)
是的,您可以做这样的事情,尽管不是您期望的方式。首先,jOOQ 不允许您以这种方式解析 SQL 语句并导出模式元信息。对于当前所有 20 个受支持的 RDBMS 来说,实施起来会非常复杂。
但是,您有 2 个选择:
如果您的 SQL 文件与数据库供应商足够无关,您可以在嵌入式数据库(如H2 )中运行该文件,然后从该数据库运行代码生成器。
这篇博客文章中描述了类似的方法,其中 JPA 注释的 Java 文件用于使用 Hibernate 生成这样的模式,然后运行 jOOQ 生成器: http://vladmihalcea.com/jooq-facts-from-jpa-annotations- to-jooq-表映射
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
| 归档时间: |
|
| 查看次数: |
2372 次 |
| 最近记录: |