可以在没有数据库连接的情况下使用sql文件中的JOOQ生成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>
答案 0 :(得分:3)
是的,你可以做这些事,虽然不是你想象的那样。首先,jOOQ不允许您解析SQL语句并以这种方式派生模式元信息。这将是复杂的实现当前所有20个支持的RDBMS的方法。
但是,您有两个选择:
如果您的SQL文件与数据库供应商无关,则可以在H2等嵌入式数据库中运行该文件,然后从该数据库运行代码生成器。
此博客文章中描述了一种类似的方法,其中JPA注释的Java文件用于使用Hibernate生成这样的模式,然后运行jOOQ生成器: http://vladmihalcea.com/jooq-facts-from-jpa-annotations-to-jooq-table-mappings
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