Как настроить Eclipselink с помощью JPA? - PullRequest
6 голосов
/ 09 июня 2010

В документации Eclipselink говорится, что мне нужны следующие записи в моем файле 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говорит мне, что класс не может быть найден.И действительно: в пакете javax.persistence от Eclipselink нет класса Entity.

Как мне настроить Eclipselink с Maven?

Ответы [ 4 ]

13 голосов
/ 09 июня 2010

Артефакт 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 для простоты.

4 голосов
/ 07 ноября 2013

Просто добавьте следующее к вашему pom.xml.Теперь эти артефакты находятся в репозиториях Maven, поэтому нет необходимости добавлять какие-либо <repository>

 <!-- 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 голосов
/ 09 июня 2010

Когда я заглядываю в свой локальный репозиторий maven, org.eclipse.persistence: eclipselink действительно содержит API постоянства, по крайней мере для версии 2.0.0-SNAPSHOT eclipselink.

Но есть и другой наборзависимости в репозитории 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>

Обратите внимание, что область действия задана как предоставленная, так как я развертываю на glassfish, который уже содержит eclipselink.

0 голосов
/ 09 июня 2010

Вы можете попробовать добавить

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