我知道这个问题已经被问过好几次了,但没有一个答案对我有效。
基本上,我尝试从我的实体生成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),但它仍然不起作用。
1条答案
按热度按时间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...任何解释都是很好的:)