我目前正在尝试从jpa实体生成jooq类,而不是使用现有的数据库。
跟随此页面并使用jooq版本3.9.1,我当前的pom插件部分如下所示
<profile> <id>jooq-jpa</id> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> <plugin> <groupId>org.jooq</groupId> <artifactId>jooq-codegen-maven</artifactId> <version>${jooq.version}</version> <dependencies> <dependency> <groupId>org.jooq</groupId> <artifactId>jooq-meta-extensions</artifactId> <version>${jooq.version}</version> </dependency> </dependencies> <executions> <execution> <goals> <goal>generate</goal> </goals> </execution> </executions> <configuration> <logging>INFO</logging> <generator> <database> <name>org.jooq.util.jpa.JPADatabase</name> <includes>.*</includes> <excludes></excludes> <properties> <property> <key>packages</key> <value>my.entity</value> </property> </properties> </database> <target> <packageName>com.myentity.jooq</packageName> <directory>${project.build.directory}/generated-sources/jooq</directory> </target> </generator> </configuration> </plugin> </plugins> </build> </profile>
当运行maven软件包时,这确实会成功,但是不会生成预期的jooq类。构建的堆栈跟踪显示:
[INFO] ARRAYs fetched : 0 (0 included, 0 excluded) [INFO] Enums fetched : 0 (0 included, 0 excluded) [INFO] Packages fetched : 0 (0 included, 0 excluded) [INFO] Routines fetched : 0 (0 included, 0 excluded) [INFO] Tables fetched : 0 (0 included, 0 excluded) [INFO] UDTs fetched : 0 (0 included, 0 excluded) [INFO] Excluding empty catalog : [INFO] Removing excess files
您的实体可能与放置插件的位置位于同一模块中。这意味着jOOQ代码生成器在编译模块之前被调用,这意味着当jOOQ代码生成器尝试查找带有JPA注释的实体时,尚未对其进行编译。
解决方案是创建以下模块依赖关系图:
+-------------------+ | Your JPA entities | +-------------------+ ^ ^ depends on | | depends on | | +---------------------+ +---------------------+ | jOOQ codegen plugin | | Your application | +---------------------+ +---------------------+ | | generates | | depends on v v +-------------------------+ | jOOQ generated classes | +-------------------------+
为了解决这个问题,我已经注册了一个问题来改进文档:https : //github.com/jOOQ/jOOQ/issues/6011