【问题标题】:How to setup Eclipselink with JPA?如何使用 JPA 设置 Eclipselink?
【发布时间】:2011-03-01 12:17:35
【问题描述】:

Eclipselink documentation 表示我需要在 pom.xml 中添加以下条目才能使用 Maven 获取它:

<dependencies>
  <dependency>
    <groupId>org.eclipse.persistence</groupId>
    <artifactId>eclipselink</artifactId>
    <version>2.0.0</version>
    <scope>compile</scope>
       ...
  </dependency>
<dependencies>
      ...
<repositories>
  <repository>
     <id>EclipseLink Repo</id>
     <url>http://www.eclipse.org/downloads/download.php?r=1&amp;nf=1&amp;file=/rt/eclipselink/maven.repo</url>
  </repository>    
      ...
</repositories> 

但是当我尝试使用@Entity 注释时,NetBeans 告诉我,找不到该类。事实上:Eclipselink 的 javax.persistence 包中没有实体类。

如何使用 Maven 设置 Eclipselink?

【问题讨论】:

    标签: java maven-2 jpa jakarta-ee eclipselink


    【解决方案1】:

    只需将以下内容添加到您的pom.xml

    现在这些工件都在 maven 存储库中,因此无需添加任何 &lt;repository&gt;

     <!-- JPA  -->
     <dependency>
        <groupId>org.eclipse.persistence</groupId>
        <artifactId>eclipselink</artifactId>
        <version>2.5.1</version>
    </dependency>
    <dependency>
        <groupId>org.eclipse.persistence</groupId>
        <artifactId>javax.persistence</artifactId>
        <version>2.0.0</version>
    </dependency>
    



    或者,如果您使用的是 Java EE 应用程序服务器,请使用 org.eclipse.persistence.jpa:org.eclipse.persistence,因为它不包括服务器上已经存在的依赖项。

     <!-- JPA for Java EE application servers  -->
     <dependency>
      <groupId>org.eclipse.persistence</groupId>
      <artifactId>org.eclipse.persistence.jpa</artifactId>
      <version>2.5.1</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse.persistence</groupId>
      <artifactId>javax.persistence</artifactId>
      <version>2.0.0</version>
      <scope>provided</scope>
    </dependency>
    
    【解决方案2】:

    eclipselink 工件不提供 JPA 2.0 API,您需要添加javax.persistence

    <repositories>
      <repository>
        <id>eclipselink</id>
        <url>http://www.eclipse.org/downloads/download.php?r=1&amp;nf=1&amp;file=/rt/eclipselink/maven.repo/</url>
      </repository>
    </repositories>
    <dependencies>
      <dependency>
        <groupId>org.eclipse.persistence</groupId>
        <artifactId>eclipselink</artifactId>
        <version>2.0.0</version>
        <scope>provided</scope><!-- since I'm running inside a Java EE container -->
      </dependency>
      <dependency>
        <groupId>org.eclipse.persistence</groupId>
        <artifactId>javax.persistence</artifactId>
        <version>2.0.0</version>
        <scope>provided</scope><!-- since I'm running inside a Java EE container -->
      </dependency>
      ...
    

    为了简单起见,我建议使用非 OSGI EclipseLink jar。

    【讨论】:

    • 我已经尝试添加依赖 javax.persistence,但是 NetBeans 中有一个错误告诉我没有 Entity 类。如果我将同一个类转换为 Java,一切都很好。你的帖子把我带到了正确的地方。
    【解决方案3】:

    当我查看本地 maven 存储库时,org.eclipse.persistence:eclipselink 确实包含持久性 api,至少对于 eclipselink 的 2.0.0-SNAPSHOT 版本而言。

    但是 eclipselink 存储库中还有另一组依赖项,它们更加模块化。这些是我在当前项目中使用的依赖项:

    <!-- persistence api -->
    <dependency>
        <groupId>org.eclipse.persistence</groupId>
        <artifactId>javax.persistence</artifactId>
        <version>2.0.0</version>
        <scope>provided</scope>
    </dependency>
    <!-- jpa implementation -->
    <dependency>
        <groupId>org.eclipse.persistence</groupId>
        <artifactId>org.eclipse.persistence.jpa</artifactId>
        <version>2.0.2</version>
        <scope>provided</scope>
    </dependency>
    

    请注意,范围设置为提供,因为我部署到已经包含 eclipselink 的 glassfish。

    【讨论】:

      【解决方案4】:

      你可以尝试添加

      <dependency>
         <groupId>org.eclipse.persistence</groupId>
         <artifactId>javax.persistence</artifactId>
         <version>2.0.0</version>
         <scope>compile</scope>
      </dependency>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-02-12
        • 2011-08-03
        • 1970-01-01
        • 1970-01-01
        • 2012-01-06
        • 1970-01-01
        • 2012-04-04
        • 2011-03-12
        相关资源
        最近更新 更多