Eclipse JPA Facet生成实体导入错误,如何配置默认持久化类?
Eclipse 2023-03生成JPA实体时导入语句错误(javax vs jakarta)
我在使用Eclipse 2023-03从现有数据库生成JPA实体时遇到问题:添加JPA Facet后生成的类结构正确,但导入语句错误,生成的是import javax.persistence.*;,而预期应为import jakarta.persistence.*;。我的项目是Spring Boot 3.0.6 starter项目,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>3.0.6</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>it.danilocalzetta</groupId> <artifactId>ifapi</artifactId> <version>0.0.1-SNAPSHOT</version> <name>ifapi</name> <description>If api</description> <properties> <java.version>17</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>jakarta.persistence</groupId> <artifactId>jakarta.persistence-api</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
生成的实体类示例:
import java.io.Serializable; import javax.persistence.*; @Entity @Table(name="teams") @NamedQuery(name="Team.findAll", query="SELECT t FROM Team t") public class Team implements Serializable {
预期的实体类示例:
import java.io.Serializable; import jakarta.persistence.*; @Entity @Table(name="teams") @NamedQuery(name="Team.findAll", query="SELECT t FROM Team t") public class Team implements Serializable {
解决方案:配置JPA Facet使用Jakarta Persistence
- 右键项目 → Properties
- 左侧菜单选择 Project Facets,找到JPA选项,点击右侧的Configure...
- 在JPA配置窗口中,修改Platform下拉选项:
- 选择支持Jakarta Persistence的平台,比如Hibernate 6.x(Spring Boot 3默认适配该版本)
- 若列表中无对应平台,点击**Download...**下载安装
- 确认Default persistence provider选择的是支持Jakarta的实现(如Hibernate 6.x)
- 点击Apply and Close,重新生成JPA实体
补充:修改persistence.xml(若存在)
如果项目中有persistence.xml文件,确保其命名空间使用Jakarta规范:
<?xml version="1.0" encoding="UTF-8"?> <persistence version="3.0" xmlns="https://jakarta.ee/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://jakarta.ee/xml/ns/persistence https://jakarta.ee/xml/ns/persistence/persistence_3_0.xsd"> <!-- 此处配置你的persistence单元 --> </persistence>
内容的提问来源于stack exchange,提问作者danilonet
相关产品推荐
相关产品推荐

