java.lang.ClassNotFoundException: javax.persistence.Persistence 無法用 JPA 找到

2022-09-03 00:32:56

我正在练习JPA API。我遇到了错误

java.lang.ClassNotFoundException: javax.persistence.Persistence cannot be found

我的代码如下:

EntityManagerFactory emf;
emf = Persistence.createEntityManagerFactory("mail");
EntityManager em = emf.createEntityManager();
Query query = em.createQuery("SELECT v FROM Version v");
List<Version> versions = query.getResultList();

行处的错误emf = Persistence.createEntityManagerFactory("mail");

任何解决方案?


答案 1

您正在尝试设置一个独立的 JPA 项目。为此,您需要一个 JPA 提供程序 jar。两个更受欢迎的提供商是Eclipselink和Hibernate。如果您使用的是 maven,则可以将依赖项添加到其实现中。

  • 对于 Eclipselink

    <dependency>
        <groupId>org.eclipse.persistence</groupId>
        <artifactId>eclipselink</artifactId>
        <version>2.5.1</version>
    </dependency>
    
  • 对于休眠

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>4.3.6.Final</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>4.3.6.Final</version>
    </dependency>
    

如果您没有使用maven,则可以从他们的站点下载他们的实现并将其放在您的类路径中。

某些 JPA 快速入门建议仅使用 maven 添加 JPA API(仅限接口声明)依赖项。

    <dependency>
        <groupId>org.eclipse.persistence</groupId>
        <artifactId>javax.persistence</artifactId>
        <version>2.1.0</version>
    </dependency>

    <dependency>
        <groupId>org.hibernate.javax.persistence</groupId>
        <artifactId>hibernate-jpa-2.1-api</artifactId>
        <version>1.0.0.Final</version>
    </dependency>

此方法仅在服务器环境中成功,因为服务器将在运行时提供适当的实现。


答案 2

右键单击项目 ->属性 ->搜索“部署程序集” ->添加 Maven 依赖项。


推荐