jOOQ 不生成源

Posted

技术标签:

【中文标题】jOOQ 不生成源【英文标题】:jOOQ does not generate sources 【发布时间】:2018-12-31 10:42:43 【问题描述】:

我正在尝试将 jOOQ 包含到我的代码中,但是没有生成任何代码。

执行mvn clean generate-sources 时,不会生成任何源。我希望它创建一个Category 类,它在下面的schema.sql-file 中定义。

CREATE TABLE IF NOT EXISTS category (
  id INTEGER IDENTITY PRIMARY KEY,
  name VARCHAR(100),
  description VARCHAR(2000),
  age_group VARCHAR(20),
  created DATETIME,
  inserted BIGINT
);

我的 pom.xml 文件如下所示:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <artifactId>spring-data-jdbc-jooq</artifactId>

    <parent>
        <groupId>org.springframework.data.examples</groupId>
        <artifactId>spring-data-jdbc-examples</artifactId>
        <version>2.0.0.BUILD-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
    </parent>

    <name>Spring Data JDBC - Usage with jOOQ</name>
    <description>Sample project demonstrating Spring Data JDBC features</description>

    <dependencies>
        <dependency>
            <groupId>org.jooq</groupId>
            <artifactId>jooq</artifactId>
            <version>3.10.8</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jooq</artifactId>
            <version>2.0.3.RELEASE</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.jooq</groupId>
                <artifactId>jooq-codegen-maven</artifactId>
                <version>3.10.8</version>

                <executions>
                    <execution>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                    </execution>
                </executions>

                <configuration>
                    <jdbc>
                        <driver>org.hsqldb.jdbcDriver</driver>
                        <url>jdbc:hsqldb:mem:testdb</url>
                    </jdbc>
                    <generator>
                        <name>org.jooq.util.DefaultGenerator</name>
                        <database>
                            <name>org.jooq.util.hsqldb.HSQLDBDatabase</name>
                            <inputSchema>PUBLIC</inputSchema>
                        </database>
                        <target>
                            <packageName>example.springdata.jdbc.basics.simpleentity.domain</packageName>
                            <directory>$basedir/gensrc/main/java</directory>
                        </target>
                    </generator>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

我假设应该创建一个目录gensrc,其中包含适当的类。 maven 构建运行成功,没有任何错误。

你可以在this GitHub repository找到整个项目。

【问题讨论】:

【参考方案1】:

您正在使用内存数据库:jdbc:hsqldb:mem:testdb。当 jOOQ 代码生成器启动时,它会收到一个空的 new 数据库,而不是您可能在其他地方创建的数据库。

【讨论】:

非常感谢,这实际上是问题所在。改用DDL generator 修复它。

以上是关于jOOQ 不生成源的主要内容,如果未能解决你的问题,请参考以下文章

Jooq codegen 不生成类

JOOQ 不生成类(JPADatabase)

jOOQ 内置方法生成具有完全限定的“列”名称的不确定查询

带有 Gradle 和 Kotlin 的 JOOQ 不生成文件

如何让 jOOQ 生成不引用主键的复合外键?

jOOQ 不生成将 <daos> 标志设置为 true 的 DAO