我正在使用Jooq试用版从POC从SQL Server数据库生成代码。我使用以下配置。但是,它不会在编译过程中生成信息模式。
<plugin>
<groupId>org.jooq.trial</groupId>
<artifactId>jooq-codegen-maven</artifactId>
<version>${jooq.version}</version>
<executions>
<execution>
<id>jooq-codegen</id>
<phase>generate-sources</phase>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<skip>${skip.jooq.generation}</skip>
</configuration>
</execution>
</executions>
<configuration>
<jdbc>
<driver>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver>
<url>${database.url}</url>
<user></user>
<password></password>
</jdbc>
<generator>
<name>org.jooq.codegen.JavaGenerator</name>
<database>
<name>org.jooq.meta.sqlserver.SQLServerDatabase</name>
<includes>.*</includes>
<excludes></excludes>
<!--<inputSchema></inputSchema> --> <!-- This will generate all schema of db, better to only generate the one
interested in -->
<inputCatalog>scm</inputCatalog>
<schemata>
<schema>
<inputSchema>dbo</inputSchema>
</schema>
<schema>
<inputSchema>INFORMATION_SCHEMA</inputSchema>
</schema>
</schemata>
</database>
<target>
<packageName>org.blackdread.sqltojava.jooq</packageName>
<directory>target/generated-sources/jooq</directory>
</target>
</generator>
</configuration>
<dependencies>
<dependency>
<groupId>org.jooq.trial</groupId>
<artifactId>jooq-meta</artifactId>
<version>${jooq.version}</version>
</dependency>
<dependency>
<groupId>org.jooq.trial</groupId>
<artifactId>jooq-codegen</artifactId>
<version>${jooq.version}</version>
</dependency>
<dependency>
<groupId>org.jooq.trial</groupId>
<artifactId>jooq</artifactId>
<version>${jooq.version}</version>
</dependency>
</dependencies>
</plugin>
日志:
[INFO]完成生成:scm.dbo:总计:1.493s,+ 0.333ms [INFO]
[INFO]不包括空架构:scm.INFORMATION_SCHEMA [INFO] 删除多余的文件
但是information_schema可以作为视图使用,它也向我返回了必要的信息。我正在使用Windows身份验证,而不是sa。
答案 0 :(得分:1)
出于历史原因,jOOQ-meta的SQLServerDatabase
仅查询sys.objects
表,而不查询sys.all_objects
表,以对数据库进行反向工程。当然,应该对此进行更改。我为此创建了一个功能请求:
https://github.com/jOOQ/jOOQ/issues/8827
已在jOOQ 3.12中实现
与此同时,您有以下选择:
SQLServerDatabase
以使其查询适应于从all_objects
中获取objects
,而不是从JDBCDatabase
获取(专业版比免费试用版要简单得多,因为您会获取源代码,并有权修补源代码)DatabaseMetaData
,它查询JDBC的sys
。这也应该从INFORMATION_SCHEMA
和INFORMATION_SCHEMA
模式中返回内容(但目前不提供对存储过程的访问权限)