2010-06-09 12 views
6

Le Eclipselink documentation dit que j'ai besoin les entrées suivantes dans mon pom.xml pour l'obtenir avec Maven:Comment configurer Eclipselink avec JPA?

<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> 

Mais quand je tente d'utiliser @Entity NetBeans annotation me dit, que la classe ne peut pas être trouvé. Et en effet: il n'y a pas de classe Entity dans le paquetage javax.persistence d'Eclipselink.

Comment dois-je configurer Eclipselink avec Maven?

Répondre

13

L'artefact eclipselink ne fournit pas l'JPA 2.0 API, vous devez ajouter 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> 
    ... 

Je recommande d'utiliser le pot EclipseLink non OSGI par souci de simplicité.

+0

J'avais déjà essayé d'ajouter la dépendance javax.persistence, mais il y a une erreur dans NetBeans m'indiquant qu'il n'y a pas de classe 'Entity'. Si je convertis la même classe en Java tout va bien. Votre message m'a conduit au bon endroit. – deamon

0

Vous pouvez ajouter

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

Quand je regarde dans mon repository local, org.eclipse.persistence: EclipseLink ne contient en effet la persistance api, au moins pour la version 2.0.0-SNAPSHOT de EclipseLink .

Mais il y a un autre ensemble de dépendances dans le référentiel de EclipseLink qui sont un peu plus modularisé. Ce sont les dépendances que je utilise dans un projet en cours:

<!-- 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> 

Notez que la portée est réglée sur pourvu que je déploie à glassfish qui contient déjà EclipseLink.

4

il suffit d'ajouter ce qui suit à votre pom.xml.

Maintenant ces artifats sont dans les dépôts Maven, donc pas besoin d'ajouter des <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> 



Ou si vous utilisez une utilisation du serveur d'applications Java EE org.eclipse.persistence.jpa:org.eclipse.persistence, car il ne comprend pas dependecies que sont déjà sur le serveur.

<!-- 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> 
+0

Avez-vous une référence? –

Questions connexes