【问题标题】:Information_schema not getting generated from jooq for SQL ServerInformation_schema 未从 jooq for SQL Server 生成
【发布时间】:2019-11-02 20:38:29
【问题描述】:

我正在使用 Jooq Trial 作为 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。

【问题讨论】:

    标签: java sql-server schema jooq


    【解决方案1】:

    由于历史原因,jOOQ-meta 的SQLServerDatabase 只查询sys.objects 表,而不是sys.all_objects 表,以对您的数据库进行逆向工程。当然,这应该改变。我为此创建了一个功能请求: https://github.com/jOOQ/jOOQ/issues/8827

    它已在 jOOQ 3.12 中实现

    解决方法

    与此同时,您有以下选择:

    • 扩展 SQLServerDatabase 以调整其查询以获取 rom all_objects,而不是从 objects(专业版比免费试用版要简单得多,因为您将获得源代码和修改源代码的权利)
    • 改用JDBCDatabase,它查询JDBC 的DatabaseMetaData。这也应该返回来自 sysINFORMATION_SCHEMA 模式的内容(但目前不提供对例如存储过程的访问权限)
    • 使用在 jOOQ-meta 模块中生成的 INFORMATION_SCHEMA

    【讨论】:

      猜你喜欢
      • 2019-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-07
      • 2017-07-12
      • 1970-01-01
      • 1970-01-01
      • 2015-09-16
      相关资源
      最近更新 更多