2009-07-30 6 views
4

J'essaye de créer une application Eclipse qui utilise JPA pour la persistance.
J'essaie d'utiliser EclipseLink comme fournisseur (plus spécifique org.eclipse.persistence.jpa.PersistenceProvider) et Derby comme base de données.
Actuellement, j'ai un projet Eclipse JPA qui traite de toutes les communications de la base de données et définit les entités du modèle. Ce produit est en cours d'essai et tout fonctionne.Le référencement d'un projet JPA à partir d'un plugin Eclipse aboutit à "PersistenceException: aucun fournisseur de persistance pour EntityManager"

L'idée est que mon application Eclipse utilise ce projet pour obtenir les entités de modèle qu'elle utilise.
Le problème est que dès que j'essaye de créer un EntityManager, j'obtiens une exception "No Persistence provider".

J'ai essayé de référencer le projet JPA directement, ou d'abord l'exporter dans un pot et en fonction de cela. Ni travaillé. Maintenant, autant que je peux deviner, ceci signifie qu'il ne voit pas mon persistence.xml ou que le fournisseur de persistance n'est pas dans mon classpath.

Le fichier de persistance se trouve dans le répertoire META-INF à la racine de mon pot, donc j'espère qu'il doit être récupéré. J'ai également ajouté ce qui suit au MANIFEST.MF du plugin d'application:

javax.persistence;bundle-version="1.99.0", 
org.eclipse.persistence.antlr;bundle-version="1.1.2", 
org.eclipse.persistence.asm;bundle-version="1.1.2", 
org.eclipse.persistence.core;bundle-version="1.1.2", 
org.eclipse.persistence.jpa;bundle-version="1.1.2" 

Cela nous espérons amener les classes nécessaires soient disponibles.

Quelqu'un peut-il voir ce qui me manque? Y a-t-il un moyen de voir lequel des deux problèmes cela pourrait être? Est-ce l'un de ces problèmes?

Merci pour toute aide.

+0

J'ai essayé chacune des solutions recommandées énumérées ci-dessus, et continue d'obtenir l'erreur «aucun fournisseur de persistance pour le gestionnaire d'entités». Y a-t-il d'autres causes et corrections potentielles qui pourraient être tentées? –

Répondre

3

Note: la wiki example actuelle est encore dépréciée (depuis August 2008 ...)

Vous pouvez voir dans leur updated example un launcher (avec liste des plug-ins appropriés)

Leur MANIFEST.MF ressemble :

Manifest-Version: 1.0 
Bundle-ManifestVersion: 2 
Bundle-Name: Application Plug-in 
Bundle-SymbolicName: org.eclipse.persistence.example.jpa.rcp.comics; singleton:=true 
Bundle-Version: 1.0.0 
Require-Bundle: org.eclipse.core.runtime, 
org.eclipse.ui, 
org.eclipse.persistence.jpa, 
system.bundle, 
org.eclipse.persistence.example.jpa.comics.model.annotated;bundle-version="1.0.0", 
javax.persistence;bundle-version="1.99.0", 
org.eclipse.persistence.antlr;bundle-version="0.1.0" 
Bundle-RequiredExecutionEnvironment: J2SE-1.5 
Bundle-ClassPath: . 
Import-Package: org.apache.derby.jdbc 

Peut-être utiliser cet exemple p vous trouvez ce qui est incorrect dans votre application?

+0

Oui, merci, là je pouvais voir quel était le problème. J'avais l'habitude de créer l'usine de gestionnaire d'entité avec Persistence.createEntityManagerFactory (UNIT_NAME); qui repose sur le fichier persistence.xml. Cela ne fonctionne pas, mais ce qui suit ne. nouvelle PersistenceProvider() createEntityManagerFactory ( \t \t UNIT_NAME, propriétés) Où propriétés est un hashmap et fournisseur persistance obtient déterminé par vos déclarations d'importation et non persistence.xml.Et enfin, il semble que vous deviez utiliser org.eclipse.persistence.jpa.osgi.PersistenceProvider comme fournisseur. –

Questions connexes