Java在IntelliJ中添加javax.persistence

问题描述 投票:0回答:2

我正在尝试创建一个基本的 Java Spring 程序。从哪里获取 javax.persistence?它无法解析持久性,并且尝试后无法在 Web 上查找 JAR。目前使用 IntelliJ .

https://spring.io/guides/tutorials/rest/

package payroll;

import java.util.Objects;

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

@Entity
class Employee {

  private @Id @GeneratedValue Long id;
  private String name;
  private String role;

enter image description here

java spring-boot jpa intellij-idea
2个回答
2
投票

这种依赖性来自

spring-boot-starter-data-jpa

请查看教程中建议的依赖项(jpa、web、h2)。

如果您正在使用 Gradle,您应该:

dependencies {
  implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
  implementation 'org.springframework.boot:spring-boot-starter-web'
  runtimeOnly 'com.h2database:h2'
  testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

Maven

  <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>com.h2database</groupId>
      <artifactId>h2</artifactId>
      <scope>runtime</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>

0
投票

▶️𝗷𝗮𝘃𝗮𝘅.𝗽𝗲𝗿𝘀𝗶𝘀𝘁𝗲𝗻𝗰𝗲.𝗘𝗻𝘁𝗶𝘁𝘆𝘃𝘀。 𝗷𝗮𝗸𝗮𝗿𝘁𝗮.𝗽𝗲𝗿𝘀𝗶𝘀𝘁𝗲𝗻𝗰𝗲.𝗘𝗻𝘁𝗶𝘁𝘆 javax.persistence.Entity 和 jakarta.persistence.Entity 是用于将类标记为 JPA 实体的注释,这一概念在命名空间转换中保持不变。然而,包的差异反映了它们属于两个不同的 API 版本: ➡️javax.persistence.Entity:Java EE 中原始 JPA API 的一部分(Java Persistence API 2.x)。 ➡️ jakarta.persistence.Entity:雅加达更新的 JPA API 的一部分 𝗦𝘁𝗲𝗽𝘀 𝘁𝗼 𝗥𝗲𝘀𝗼𝗹𝘃𝗲 𝗷𝗮𝘃𝗮𝘅.𝗽𝗲𝗿𝘀𝗶𝘀𝘁𝗲𝗻𝗰 𝗲.𝗘𝗻𝘁𝗶𝘁𝘆𝗜𝘀𝘀𝘂𝗲𝘀 𝗜𝗳。

👉𝗧𝗿𝗮𝗻𝘀𝗶𝘁𝗶𝗼𝗻𝘁𝗼𝗷𝗮𝗸𝗮𝗿𝘁𝗮.𝗽𝗲𝗿𝘀𝗶𝘀𝘁𝗲𝗻 𝗰𝗲.𝗘𝗻𝘁𝗶𝘁𝘆:

如果您正在构建新应用程序或有能力更新代码库,建议迁移到 jakarta.persistence.Entity 以实现长期兼容性。 更新您的 pom.xml 或 build.gradle 依赖项以包含 Jakarta EE(版本 9 或更高版本)而不是 Java EE。 使用 Jakarta 兼容层:

👉一些应用程序服务器(例如 WildFly 或 Open Liberty)为在 Jakarta EE 9+ 环境中运行时仍使用 javax.* 的应用程序提供兼容性层。 在服务器配置中启用这些兼容性设置可以轻松迁移,而无需完全重写代码。 确保正确的依赖关系和 API 版本:

👉验证您是否使用所有 javax.* 或所有 jakarta.* 依赖项,因为混合它们可能会导致运行时问题。 确保您使用的持久性提供程序(例如 Hibernate、EclipseLink)与所需的包版本(javax.persistence 或 jakarta.persistence)兼容。 切换到 Jakarta EE 以适应现代环境:

👉如果您在较新的环境中开发或部署应用程序,请考虑完全迁移到 jakarta.* API。这一转变将确保与雅加达兼容的容器和框架的兼容性。 使用工具或 IDE 插件,通过在必要时用 jakarta.persistence 替换 javax.persistence 来自动化部分迁移过程。

© www.soinside.com 2019 - 2024. All rights reserved.