Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法使用JPADatabase从H2生成Jooq类_Java_Jooq - Fatal编程技术网

Java 无法使用JPADatabase从H2生成Jooq类

Java 无法使用JPADatabase从H2生成Jooq类,java,jooq,Java,Jooq,我目前正在尝试从jpa实体生成jooq类,而不是使用现有的db 接下来,使用jooq版本3.9.1,我当前的pom插件部分如下 <profile> <id>jooq-jpa</id> <build> <plugins> <plugin> <groupId

我目前正在尝试从jpa实体生成jooq类,而不是使用现有的db

接下来,使用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>

您的实体可能与您放置插件的模块位于同一模块中。这意味着在编译模块之前调用jOOQ代码生成器,这意味着当jOOQ代码生成器试图查找JPA注释的实体时,这些实体尚未编译

解决方案是创建以下模块依赖关系图:

+-------------------+
|您的JPA实体|
+-------------------+
^         ^
取决于
|         |
+---------------------+   +---------------------+
|jOOQ codegen插件| |您的应用程序|
+---------------------+   +---------------------+
|         |
生成| |取决于
v v
+-------------------------+
|jOOQ生成的类|
+-------------------------+

为了澄清这一点,我注册了一个问题来改进文档:

您的JPA注释实体是否位于jOOQ代码生成器插件的类路径上?也就是说,它们是在生成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