使用 spring-data-jpa 和 IntelliJ “包 javax.persistence 不存在”

pma*_*ais 17 jpa intellij-idea maven

我正在 IntelliJ 中使用 spring-data-jpa 启动一个项目,但无法加载 javax.persistence (“包 javax.persistence 不存在”)。

我已经花了四个小时来解决这个看似非常简单的问题。我使用标准 IntelliJ UI 创建项目并选择 spring 框架和 spring-data-jpa 选项。

我唯一的代码是:

import javax.persistence.entity;

@entity
public class customer {

}
Run Code Online (Sandbox Code Playgroud)

项目无法构建,IDE 中的工具提示显示“无法解析符号持久性”我缺少什么?

我的目录结构如下: 在此输入图像描述

pma*_*ais 12

我所需要做的就是通过项目结构对话框 (hibernate-entitymanager) 添加来自 Maven 的 hibernate 库


Cur*_*lop 8

在 java 11(2018 年发布)中,java EE 库从内置核心移至可选依赖项(请参阅http://openjdk.java.net/jeps/320)。所以你可能需要添加:

<dependency>
    <groupId>javax.persistence</groupId>
    <artifactId>javax.persistence-api</artifactId>
    <version>2.2</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

(hibernate-entitymanager将此作为依赖项,因此这可能就是添加它解决问题的原因 - 请参阅https://repo1.maven.org/maven2/org/hibernate/hibernate-entitymanager/5.6.15.Final/hibernate-entitymanager- 5.6.15.Final.pom )

另相关:2017 年,Java EE 转移到 Eclipse 并更名为 Jakarta EE(Oracle 拥有“Java”这个名称)。

最新的进口现在位于“jakarta”下:例如import jakarta.persistence.EntityManager;

Hibernate 5 仍然使用 JPA 2.2 (javax),但 Hibernate 6 使用 JPA 3.0 (jakarta)。确保您的mvn dependency:tree.


小智 5

三件事:

首先,您输入的“Entity”错误。Java 类区分大小写,因此应该是@Entity。

其次,javax.persistence并不总是与核心JDK一起打包,因此您需要下载它。您可以在这里获取它: https://mvnrepository.com/artifact/javax.persistence/javax.persistence-api/2.2

最后,您的目录结构可能会导致一些问题。我建议将其更改为

src(目录)

-> 主目录(目录)

-> -> java(目录)

-> -> -> 驱动程序(文件)

-> -> -> Data.xml(文件)

-> -> -> 客户(文件)