静态jpa元模型不会使用hibernate-jpamodelgen 6.1.5.Final生成

6l7fqoea  于 2022-11-14  发布在  其他
关注(0)|答案(1)|浏览(233)

我知道这个问题已经被问过好几次了,但没有一个答案对我有效。
基本上,我尝试从我的实体生成jpa元模型,以便在规范中使用它们。但是,尽管运行了(我认为,请参见重建项目输出屏幕截图),Hibernate JPA 2静态元模型生成器6.1.5.Final没有在annotations文件夹中生成任何类。
有人能请帮助我吗?(PS对不起,我不能发布截图,因为堆栈溢出不让我)
我正在使用java 19与sping Boot 2.7.5和maven和intellij。
下面是Test.java文件(我要生成的类):

package com.example.demo.model;

import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
public class Test {
    @Id
    private int id;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
}

pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>2.7.5</version>
      <relativePath/> <!-- lookup parent from repository -->
   </parent>
   <groupId>com.example</groupId>
   <artifactId>demo</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <name>demo</name>
   <description>Demo project for Spring Boot</description>
   <properties>
      <java.version>19</java.version>
   </properties>
   <dependencies>
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-web</artifactId>
      </dependency>

      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-test</artifactId>
         <scope>test</scope>
      </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
      <dependency>
         <groupId>org.hibernate</groupId>
         <artifactId>hibernate-jpamodelgen</artifactId>
         <version>6.1.5.Final</version>
      </dependency>
      <dependency>
         <groupId>jakarta.xml.bind</groupId>
         <artifactId>jakarta.xml.bind-api</artifactId>
         <version>4.0.0</version>
      </dependency>
   </dependencies>

   <build>
      <plugins>
         <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
         </plugin>
      </plugins>
   </build>

</project>

重建项目输出:

Clearing build system data...
Executing pre-compile tasks...
Cleaning output directories…
Running 'before' tasks
Checking sources
Copying resources... [demo]
Parsing java… [demo]
java: Hibernate JPA 2 Static-Metamodel Generator 6.1.5.Final
Writing classes… [demo]
Updating dependency information… [demo]
Adding @NotNull assertions… [demo]
Adding pattern assertions… [demo]
Adding Threading Model assertions… [demo]
Parsing java… [tests of demo]
Writing classes… [tests of demo]
Updating dependency information… [tests of demo]
Adding @NotNull assertions… [tests of demo]
Adding pattern assertions… [tests of demo]
Adding Threading Model assertions… [tests of demo]
Running 'after' tasks
javac 19 was used to compile java sources
Finished, saving caches…
Executing post-compile tasks...
Finished, saving caches…
Synchronizing output directories...
06-11-22 14:37 - Build completed successfully in 3 sec, 464 ms

以及intellij注解处理器设置:
我无法发布图像,但已选中启用注解处理以及从项目类路径获取处理器,路径为target\generated-sources\annotations(位于模块内容根中)。
重建项目后,会出现target文件夹,其中包含名为generated-sources的文件夹。此generated-sources包含名为annotations的文件夹,但它不包含任何内容(但它应该包含类Test_)。
文件夹annotations也已设置为源文件夹。
我读过一些以前的帖子,但没有一个对我有用。我也读了文档(doc),但它仍然不起作用。

x33g5p2x

x33g5p2x1#

我找到了两个解决方案,但我不明白为什么它能起作用(我想我很幸运)。任何解释都很好:)
1.第一个解决方案
直接在依赖项中使用Hibernate的5.6.12.Final版本。如果我将其升级到6.1.5.Final版本(如intellij建议的),则不会生成元模型,但我不知道为什么...

1.第二个解决方案
将依赖项设置为最新版本(此处为6.1.5.Final),但向构建中添加一个带有注解的插件ProcessorPaths(使用版本5.6.12.Final)

PS:我不明白为什么变量**${hib.version}**被设置为版本5.6.12.Final,而我在依赖项中将我的hib版本设置为6.1.5.Final...任何解释都是很好的:)

相关问题