我在 JPADatabase 中使用 jooq codegen 时遇到问题。我经历过这个post https://stackoverflow.com/questions/42968155/unable-to-generate-jooq-classes-from-h2-using-jpadatabase并进行了相应的更改。我的项目包含子模块,实体类位于域模块中。我有依赖于域的商务模块。所以我在 biz 模块的 pom.xml 中有这个构建配置。
<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>3.9.1</version>
<!-- The plugin should hook into the generate goal -->
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.jooq</groupId>
<artifactId>jooq-meta-extensions</artifactId>
<version>3.9.1</version>
</dependency>
</dependencies>
<configuration>
<!-- Generator parameters -->
<generator>
<database>
<name>org.jooq.util.jpa.JPADatabase</name>
<properties>
<!-- A comma separated list of Java packages, that contain your entities -->
<property>
<key>packages</key>
<value>com.yaswanth.domain.entity</value>
</property>
</properties>
</database>
<target>
<packageName>com.yaswanth.domain.entity.jooq</packageName>
<directory>target/generated-sources/jooq</directory>
</target>
</generator>
</configuration>
</plugin>
</plugins>
</build>
插件失败,实体上出现 ClassNotFoundException。这是堆栈跟踪。
Caused by: org.jooq.exception.DataAccessException: Error while exporting schema
at org.jooq.util.jpa.JPADatabase.create0(JPADatabase.java:147)
at org.jooq.util.AbstractDatabase.create(AbstractDatabase.java:221)
at org.jooq.util.AbstractDatabase.create(AbstractDatabase.java:213)
at org.jooq.util.AbstractDatabase.getDialect(AbstractDatabase.java:195)
at org.jooq.util.AbstractGenerator.logDatabaseParameters(AbstractGenerator.java:129)
at org.jooq.util.JavaGenerator.generate(JavaGenerator.java:243)
at org.jooq.util.GenerationTool.run(GenerationTool.java:610)
at org.jooq.util.GenerationTool.generate(GenerationTool.java:199)
at org.jooq.util.maven.Plugin.execute(Plugin.java:188)
... 22 more
Caused by: java.lang.ClassNotFoundException: com.walmartlabs.sc.domain.entity.ItemNames
at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50)
at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:271)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:247)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:239)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at org.jooq.util.jpa.JPADatabase.create0(JPADatabase.java:135)
... 30 more
域模块类已经生成,但插件仍然显示 ClassNotFoundException。我使用的是 jooq 版本 3.9.1。谁能告诉我我在这里做错了什么?
更新:卢卡斯·埃德尔的答案是正确答案并被接受。我自己对这个问题的回答对我有用,因为我在 Maven 存储库中缓存了该特定版本。我的答案是错误的。
您似乎遇到了问题#5845 https://github.com/jOOQ/jOOQ/issues/5845,已在 jOOQ 3.10 中修复,并计划在 3.9.3 和 3.8.8 中发布。
目前最好的解决方法可能是使用 jooq-meta-extensions 依赖项的 GitHub 版本 (3.10-SNAPSHOT):https://github.com/jOOQ/jOOQ/tree/master/jOOQ-meta-extensions https://github.com/jOOQ/jOOQ/tree/master/jOOQ-meta-extensions,或相应地修补您的版本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)