2010-07-12 35 views
6

Je souhaite créer un regroupement capable d'utiliser Java Persistence. Pour ce faire, j'ai créé un projet de plugin dans Eclipse. Dans mon projet, j'ai créé un fichier persistence.xml dans META-INF. J'ai ASLO ajouté dans mon Manifest.mf (dans les depencies) ces 3 paquets:EclipseLink: aucun fournisseur de persistance pour EntityManager nommé

  1. javax.persistence.jar
  2. org.eclipse.persistence.jar
  3. org.eclipse.persistence.jar

Puis, dans mon Activator-je utiliser ces lignes pour créer un EntityManager:

factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME); 
EntityManager em = factory.createEntityManager(); 

pour exécuter mon paquet, je l'ai fait un produ configuration ct. Quand je lance ma configuration de produit, je suis arrivé cette erreur:

javax.persistence.PersistenceException: Aucun fournisseur de persistance pour les

nommé EntityManager J'ai essayé de déplacer l'emplacement de mon persistence.xml sans succès . Il semble que n'importe quel paquet charge le fichier persistence.xml. Peut-être que je n'importe pas les bons paquets?

Vous pouvez télécharger mon Bundle simple, ici: download

Pourriez-vous me aider à trouver une solution ou un indice?

Répondre

4

Essayez d'ajouter cette balise dans le persistence.xml:

<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 
+1

Merci, mais j'ai cette ligne dans ma persistance.fichier xml. Une autre solution? – user376112

2

Il semble que vous ne l'avez pas décrire votre unité de persistance dans MANIFEST.MF avec JPA-PersistenceUnits: en-tête. Vous pouvez trouver plus de détails pour EclipseLink ici (1).

(1): http://wiki.eclipse.org/Gemini/JPA/Documentation/CreatingAnApplication

+0

J'ai résolu mon problème. Je ne devais mettre dans le classpath du manifeste ces paquets: - persistence.jar - eclipselink.jar - mysql-connector.jar Merci – user376112

6

Je l'ai résolu mon problème. Je ne devais mettre dans le classpath du manifeste ces paquets: - persistence.jar - eclipselink.jar - mysql-connector.jar

Merci

+0

Je ne suis pas sûr que je l'ai fait suivre que vous avez ajouté un manifeste à ceux pot des dossiers? Peut élaborer un peu plus? – simgineer

1

Si vous exécutez votre application à partir d'Eclipse en utilisant Maven, cliquez avec le bouton droit sur le projet JPA, choisissez Propriétés et vérifiez s'il existe un élément de menu "Assemblage de déploiement". Si c'est le cas, cliquez sur Assemblage de déploiement, sur le bouton Ajouter ..., sur Entrées de chemin de génération Java, puis sélectionnez Dépendances Maven. Assurez-vous que eclipselink.jar est parmi les dépendances Maven

1

Je recevais la même erreur dans un projet simple exécuté dans Eclipse.

Il s'avère que l'ajout du répertoire META-INF (contenant persistence.xml) à mon chemin de classe était une mauvaise chose à faire.

Vous devez avoir son répertoire contenant (ou jar) sur le chemin de la classe. À partir des sources EclipseLink 2.5.1:

/** 
    * Search the classpath for persistence archives. A persistence archive is 
    * defined as any part of the class path that contains a META-INF directory 
    * with a persistence.xml file in it. Return a list of {@link Archive} 
    * representing the root of those files. It is the caller's responsibility 
    * to close all the archives. 
    * 
    * @param loader the class loader to get the class path from 
    */ 
    public static Set<Archive> findPersistenceArchives(ClassLoader loader){ 
     // allow alternate persistence location to be specified via system property. This will allow persistence units 
     // with alternate persistence xml locations to be weaved 
     String descriptorLocation = System.getProperty(PersistenceUnitProperties.ECLIPSELINK_PERSISTENCE_XML, PersistenceUnitProperties.ECLIPSELINK_PERSISTENCE_XML_DEFAULT); 
     return findPersistenceArchives(loader, descriptorLocation); 
    }