Aucun fournisseur de persistance pour EntityManager nommé

148

J'ai mon persistence.xmlavec le même nom en utilisant TopLinksous le META-INFrépertoire. Ensuite, j'ai mon code qui l'appelle avec:

EntityManagerFactory emfdb = Persistence.createEntityManagerFactory("agisdb");

Pourtant, j'ai reçu le message d'erreur suivant:

2009-07-21 09: 22: 41,018 [main] ERROR - Aucun fournisseur de persistance pour EntityManager nommé agisdb
javax.persistence.PersistenceException: aucun fournisseur de persistance pour EntityManager nommé agisdb
    à javax.persistence.Persistence.createEntityManagerFactory (Persistence.java:89)
    à javax.persistence.Persistence.createEntityManagerFactory (Persistence.java:60)

Voici le persistence.xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
    <persistence-unit name="agisdb">
        <class>com.agis.livedb.domain.AddressEntity</class>
        <class>com.agis.livedb.domain.TrafficCameraEntity</class>
        <class>com.agis.livedb.domain.TrafficPhotoEntity</class>
        <class>com.agis.livedb.domain.TrafficReportEntity</class>
        <properties>
            <property name="toplink.jdbc.url" value="jdbc:mysql://localhost:3306/agisdb"/>
            <property name="toplink.jdbc.driver" value="com.mysql.jdbc.Driver"/>
            <property name="toplink.jdbc.user" value="root"/>
            <property name="toplink.jdbc.password" value="password"/>
        </properties>
    </persistence-unit>
</persistence>

Cela aurait dû être dans le classpath. Pourtant, j'ai eu l'erreur ci-dessus.

Robert A Henru
la source

Réponses:

85

Ensuite <persistence-unit name="agisdb">, définissez le nom du fournisseur de persistance:

<provider>org.hibernate.ejb.HibernatePersistence</provider>
Dave Jarvis
la source
5
J'utilise Derby et il n'était pas nécessaire de le spécifier (je l'ai fait, mais je l'ai supprimé une fois que j'ai résolu le problème, juste pour être sûr). J'obtenais finalement l'erreur parce que persistence.xml n'était pas dans le dossier src / META-INF, même s'il se trouvait dans un dossier dans le chemin source d'Eclipse pour le projet. Je pense que quelque part, il est câblé d'être sur src / *
Fuhrmanator
6
ce n'était pas nécessaire dans mon cas, mais classpathing hibernate-entitymanager * .jar comme indiqué dans la réponse d' Ualter Jr ci-dessous. J'utilise une application GWT autonome avec hibernate-core-4.3.7.jar , hibernate-entitymanager-4.3.7.Final.jar et hibernate-jpa-2.1-api-1.0.0.jar .
Andreas Dietrich
3
Même chose avec @AndreasDietrich, après avoir remplacé l'artefact "hibernate-core-4.3.10" par "hibernate-entitymanager-4.3.10" dans pom.xml (j'utilise maven), cette erreur a disparu. En fait, hibernate.org/orm/downloads dit que vous devriez utiliser "hibernate-entitymanager-4.3.10" pour JPA.
Hong
1
En dehors de cela, j'ai également dû passer de hibernate-entitymanager-3.4.0.GA à 3.6.10.Final . Juste au cas où vous auriez encore une base de code héritée utilisant Hibernate 3.
Javi Vazquez
5
Je suis un peu surpris que vous ne rencontriez pas de problème avec votre <provider/>, tout en utilisant hibernate-4, vous devriez changer votre fournisseur <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>, voir stackoverflow.com/questions/23041964/… .
Rob
86

Placez le "hibernate-entitymanager.jar"dans le classpath de l'application.
Pour les versions plus récentes, vous devez utiliser à la "hibernate-core.jar"place de la version obsolètehibernate-entitymanager

Si vous utilisez un IDE, comme Eclipse :Project Properties -> Java Build Path -> Libraries.

Sinon, placez-le dans le /libfichier de votre application.

Ualter Jr.
la source
3
Il m'a fallu quelques heures pour comprendre que c'était la cause. Pour les autres personnes à la recherche de ce pot sanglant, dans le cas d'Hibernate 4.1.3, il est dans hibernate-release-4.1.3.Final \ lib \ jpa \ hibernate-entitymanager-4.1.3.Final.jar
Vedran
7
Et pour ceux d'entre nous qui utilisent Maven, ce serait un org.hibernateartefactid groupidhibernate-entitymanager
Simon Forsberg
2
C'était eclipselink.jar pour moi, qui manquait dans le chemin. Pas d'hibernation * quelque chose.jar dans le chemin du tout.
utilisateur inconnu
3
Je viens de passer quelques heures à confirmer que persistence.xml était sur le chemin de classe et à comparer chaque facette d'un projet pour lequel cela fonctionnait et un projet pour lequel il ne fonctionnait pas. Message d'erreur très trompeur car il peut se produire si persistence.xml est manquant, si le PU avec ce nom est manquant, ou apparemment si un pot de mise en veille prolongée est manquant!
David Mann
Pour moi, c'était org.eclipse.persistence.jpaavec un test de portée.
Marek
67

Assurez-vous que le persistence.xmlfichier est dans le répertoire:<webroot>/WEB-INF/classes/META-INF

user225932
la source
8
cela n'a pas fonctionné pour moi, a amené l'unité de persistance introuvable: erreur «null». Déplacement vers /src/main/resources/META-INF/persistence.xml
tomasb
1
Je suppose que cela s'applique à ceux qui utilisent toplink (ou d'autres éléments liés au Web), pour tous les autres, d'autres réponses ici peuvent être plus appropriées.
Simon Forsberg
2
Merci, pour moi, le chemin est target / classes / META-INF
Frizz1977
Idem, pour une raison étrange, il doit être dans un répertoire META-INF, sinon ne fonctionnera pas ...
Thomas
17

J'en avais besoin dans mon fichier pom.xml:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
    <version>4.2.6.Final</version>
</dependency>
technocrate
la source
Fonctionne pour la version 4.3.11.
petertc
Il est obsolète, voir ci-dessus. Utilisez plutôt hibernate-core.
foo
16

Face au même problème et n'a pas pu trouver de solution pendant assez longtemps. Dans mon cas, cela a aidé à remplacer

<provider>org.hibernate.ejb.HibernatePersistence</provider>

avec

<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>

A pris la solution d' ici

Sneg
la source
2
La mise à niveau de Hibernate 4.3.5 vers 5.2.12 et ce changement de nom de fournisseur ont résolu le problème pour moi. Ce paramètre semble autoriser JPA à utiliser le fichier .jar principal au lieu du fichier .jar du gestionnaire d'entités qui apparaît comme obsolète sur le référentiel central Maven. Merci beaucoup d'avoir partagé.
joshpt
10

Il y a un autre point: si vous rencontrez ce problème dans un environnement Eclipse RCP, vous devrez peut-être changer la génération Factory de Persistence.createEntityManagerFactoryànew PersistenceProvider().createEntityManagerFactory

voir ECF pour une discussion détaillée à ce sujet.

col.panic
la source
C'était exactement le problème que j'avais avec org.eclipse.persistence.jpa 2.4.0. J'ai littéralement passé 2 heures à m'arracher les cheveux à me demander pourquoi il ne pouvait pas trouver mon persisence.xml. Tous les exemples ne semblent pas intégrer cela. eh bien ... merci beaucoup!
Mark Miller
9

Peut-être avez-vous défini un fournisseur comme <provider>org.hibernate.ejb.HibernatePersistence</provider>mais en référençant un autre dans jar. Cela m'est arrivé: mon fournisseur persistence.xml était openjpa mais j'utilisais eclipselink dans mon classpath. J'espère que cette aide!

Gilberto
la source
7

Conseil rapide:

  • vérifier si persistence.xml est dans votre chemin de classe
  • vérifier si le fournisseur de mise en veille prolongée est dans votre chemin de classe

Avec l'utilisation de JPA dans une application autonome (en dehors de JavaEE), un fournisseur de persistance doit être spécifié quelque part. Cela peut être fait de deux manières que je connais:

  • soit ajouter un élément de fournisseur dans l'unité de persistance: <provider>org.hibernate.ejb.HibernatePersistence</provider>(comme décrit dans la réponse correcte de Chris: https://stackoverflow.com/a/1285436/784594 )
  • ou le fournisseur de l'interface javax.persistence.spi.PersistenceProvider doit être spécifié en tant que service, voir ici: http://docs.oracle.com/javase/6/docs/api/java/util/ServiceLoader.html (il s'agit généralement inclus lorsque vous incluez la mise en veille prolongée, ou une autre implémentation JPA, dans votre chemin de classe

Dans mon cas, j'ai découvert qu'en raison d'une mauvaise configuration de maven, le jar hibernate-entitymanager n'était pas inclus en tant que dépendance, même s'il s'agissait d'une dépendance transitoire d'un autre module.

OndroMih
la source
/ facepalm - J'ai oublié d'ajouter la dépendance maven pour le fournisseur hibernate. Je vous remercie!
jgitter
5

Si vous utilisez Eclipse, assurez-vous que le modèle d'exclusion ne supprime pas votre persistence.xmldossier source sur le chemin de construction.

  1. Allez dans Propriétés -> Chemin de construction Java -> onglet Source
  2. Vérifiez votre modèle d'exclusion qui se trouve au
    MyProject/src/main/java -> Excluded: <your_pattern>
    nœud de l'arborescence
  3. Si vous le souhaitez, définissez-le sur Excluded: (None)en sélectionnant le nœud et en cliquant sur le bouton Modifier ... sur la gauche.
wypieprz
la source
J'ai résolu mon problème. Le modèle exclu a été défini sur "**" après une extraction / extraction. Je ne sais pas pourquoi ...
Jocelyn
5

J'ai quelques années de retard à la fête ici, mais j'ai rencontré la même exception en essayant de faire fonctionner Hibernate 3.5.1 avec HSQLDB et un programme JavaFX de bureau. Je l'ai fait fonctionner avec l'aide de ce fil et de nombreux essais et erreurs. Il semble que vous obtenez cette erreur pour une grande variété de problèmes:

No Persistence provider for EntityManager named mick

J'ai essayé de créer les exemples du didacticiel de mise en veille prolongée, mais comme j'utilisais Java 10, je n'ai pas pu les faire construire et fonctionner facilement. J'ai abandonné cela, ne voulant pas vraiment perdre de temps à régler ses problèmes. La configuration d'un fichier module-info.java (Jigsaw) est une autre boule de poils que beaucoup de gens n'ont pas encore découverte.

Un peu déroutant est que ceux-ci (ci-dessous) étaient les deux seuls fichiers dont j'avais besoin dans mon fichier build.gradle. La documentation Hibernate ne sait pas exactement quels Jars vous devez inclure. Entity-manager était source de confusion et n'est plus requis dans la dernière version d'Hibernate, tout comme javax.persistence-api. Notez que j'utilise Java 10 ici, j'ai donc dû inclure le jaxb-api, pour contourner certaines erreurs de liaison xml, ainsi que pour ajouter une entrée pour le module de persistance java dans mon fichier module-info.java.

Build.gradle

// https://mvnrepository.com/artifact/org.hibernate/hibernate-core
compile('org.hibernate:hibernate-core:5.3.1.Final')

// https://mvnrepository.com/artifact/javax.xml.bind/jaxb-api
compile group: 'javax.xml.bind', name: 'jaxb-api', version: '2.3.0'

Module-info.java

// Used for HsqlDB - add the hibernate-core jar to build.gradle too
requires java.persistence;

Avec hibernate 5.3.1, vous n'avez pas besoin de spécifier le fournisseur ci-dessous dans votre fichier persistence.xml. Si aucun n'est fourni, le fournisseur Hibernate est choisi par défaut.

<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>

Le fichier persistence.xml doit être situé dans le bon répertoire pour:

src/main/resources/META-INF/persistence.xml

Parcourir le code source de mise en veille prolongée dans le débogueur Intellij, où il recherche un dialecte, a également levé exactement la même exception, en raison d'une propriété de dialecte manquante dans le fichier persistence.xml. J'ai ajouté ceci (ajoutez le bon pour votre type de base de données):

<property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>

J'ai toujours eu la même exception après cela, donc parcourir à nouveau le débogueur dans Intellij a révélé que l'entité de test que j'essayais de persister (exemple simple parent-enfant) avait des annotations manquantes pour les relations OneToMany, ManyToOne. J'ai corrigé cela et l'exception a disparu et mes entités ont persisté ok.

Voici mon persistence.xml final complet:

<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
            http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
         version="2.1">

<persistence-unit name="mick" transaction-type="RESOURCE_LOCAL">
    <description>
        Persistence unit for the JPA tutorial of the Hibernate Getting Started Guide
    </description>

    <!-- Provided in latest release of hibernate
    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
    -->

    <class>com.micks.scenebuilderdemo.database.Parent</class>
    <class>com.micks.scenebuilderdemo.database.Child</class>

    <properties>
        <property name="javax.persistence.jdbc.driver" value="org.hsqldb.jdbc.JDBCDriver"/>

        <property name="javax.persistence.jdbc.url"
                  value="jdbc:hsqldb:file:./database/database;DB_CLOSE_DELAY=-1;MVCC=TRUE"/>

        <property name="javax.persistence.jdbc.user" value="sa"/>
        <property name="javax.persistence.jdbc.password" value=""/>

        <property name="hibernate.show_sql" value="true"/>
        <property name="hibernate.hbm2ddl.auto" value="create"/>
        <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
    </properties>

</persistence-unit>

</persistence>

J'ai probablement perdu environ une demi-journée sur ce bijou. Mon conseil serait de commencer très simple - une seule entité de test avec un ou deux champs, car il semble que cette exception puisse avoir de nombreuses causes.

MickG
la source
Merci beaucoup pour les détails de configuration. Vraiment aidé à le résoudre.
Doogle
4

Cas d'angle: si vous utilisez m2Eclipse, il met automatiquement des exclusions dans vos dossiers de ressources. Ensuite, lorsque vous essayez d'exécuter des tests dans eclipse, l'absence ultérieure de persistence.xml produira cette erreur.

Rob
la source
3

Assurez-vous d'avoir créé le fichier persistence.xml dans le dossier 'src'. J'ai créé sous le dossier du projet et c'était mon problème.

harcharan
la source
Eclipse 4.4.0 ne veut pas imbriquer les dossiers SRC, donc je mettais META-INF au niveau supérieur, pensant que persistence.xml sur le chemin de classe serait adéquat. NE PAS! J'ai dû créer manuellement un src / META-INF (dans le système d'exploitation) et déplacer le fichier persistence.xml à la main. Peut-être est-il possible de le faire dans Eclipse, mais je ne pouvais pas le comprendre.
Fuhrmanator
2

Cela se produit lorsque le gestionnaire d'entités tente de pointer vers de nombreuses unités de persistance. Suivez les étapes suivantes:

  1. ouvrez le fichier associé dans votre éditeur (à condition que votre projet ait été fermé dans votre IDE)
  2. supprimer tout le code lié à la persistance et au gestionnaire d'entités
  3. enregistrer le fichier
  4. ouvrez le projet dans votre IDE
  5. liez maintenant la base de données ou la table de votre choix
mahesh
la source
2

J'ai rencontré le même problème, mais sur EclipseLink version 2.5.0 .

J'ai résolu mon problème en ajoutant encore un autre fichier jar qui était nécessairement ( javax.persistence_2.1.0.v201304241213.jar.jar );

Jars nécessaires:
- javax.persistence_2.1.0.v201304241213.jar
- eclipselink.jar
- jdbc.jar (selon la base de données utilisée).

J'espère que ça aide.

EX
la source
2

J'ai également eu cette erreur mais le problème était l'URI de l'espace de noms dans le fichier persistence.xml.

Je l' ai remplacé http://xmlns.jcp.org/xml/ns/persistenceà http://java.sun.com/xml/ns/persistenceet la version 2.1 à 2.0.

Ça marche maintenant.

Ludovic Guillaume
la source
C'est exactement ce qui m'est arrivé avec Tomcat .. Je viens d'ajouter un en-tête complet pour clarifier pour les nouveaux utilisateurs
childno͡.de
2

Vous devez ajouter le hibernate-entitymanager-x.jar dans le chemin des classes.

Dans Hibernate 4.x, si le fichier jar est présent, il n'est pas nécessaire d'ajouter org.hibernate.ejb.HibernatePersistence dans le fichier persistence.xml.

vijayinani
la source
1

La question a déjà reçu une réponse, mais je voulais juste publier une astuce qui me retenait. Cette exception était levée après des erreurs précédentes. J'obtenais ceci:

property toplink.platform.class.name is deprecated, property toplink.target-database should be used instead.

Même si j'avais changé le persistence.xml pour inclure le nouveau nom de propriété:

<property name="toplink.target-database" value="oracle.toplink.platform.database.oracle.Oracle10Platform"/>

Suite au message concernant le nom de la propriété obsolète, j'obtenais la même PersistenceException que ci-dessus et une toute autre chaîne d'exceptions. Mon conseil: assurez-vous de vérifier le début de la saucisse d'exception.

Il semble y avoir un bogue dans Glassfish v2.1.1 où les redéploiements ou annulations et déploiements ne mettent pas à jour le fichier persistence.xml, qui est mis en cache quelque part. J'ai dû redémarrer le serveur et cela a fonctionné.

Rónán Ó Braonáin
la source
1

Vous avez besoin des fichiers jar suivants dans le classpath:

  1. antlr-2.7.6.jar
  2. commons-collections-3.1.jar
  3. dom4j-1.6.1.jar
  4. hibernate-commons-annotations-4.0.1.Final.jar
  5. hibernate-core-4.0.1.Final.jar
  6. hibernate-entitymanager.jar
  7. hibernate-jpa-2.0-api-1.0.0.Final.jar
  8. javassist-3.9.0.jar
  9. jboss-logging-3.1.1.GA.jar
  10. jta-1.1.jar
  11. slf4j-api-1.5.8.jar
  12. xxx-jdbc-driver.jar
oui
la source
1

Je viens de copier le META-INF dans src et j'ai travaillé!

Zakaria Bouazza
la source
1

Hibernate 5.2.5
Fichiers Jar Requis dans le chemin de classe. Cela se trouve dans un dossier obligatoire de la version finale d'Hibernate 5.2.5. Il peut être téléchargé sur http://hibernate.org/orm/downloads/

  1. antlr-2.7.7
  2. cdi-api-1.1
  3. camarade de classe-1.3.0
  4. dom4j-1.6.1
  5. el-api-2.2
  6. geronimo-jta_1.1_spec-1.1.1
  7. hibernate-commons-annotation-5.0.1.Final
  8. hibernate-core-5.2.5.Final
  9. hibernate-jpa-2.1-api-1.0.0.Final
  10. jandex-2.0.3.Final
  11. javassist-3.20.0-GA
  12. javax.inject-1
  13. jboss-interceptor-api_1.1_spec-1.0.0.Beta1
  14. jboss-logging-3.3.0.Final
  15. jsr250-api-1.0

Créez un fichier xml "persistence.xml" dans

VotreProjet / src / META-INF / persistence.xml

persistence.xml

<?xml version="1.0" encoding="UTF-8"?>

<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
         http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
         version="2.1">

<persistence-unit name="sample">

    <class>org.pramod.data.object.UserDetail</class>
    <exclude-unlisted-classes>true</exclude-unlisted-classes>
    <properties>
        <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
        <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
        <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/hibernate_project"/>
        <property name="hibernate.connection.username" value="root"/>
        <property name="hibernate.connection.password" value="root"/>
        <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
        <property name="hibernate.show_sql" value="true"/>
        <property name="hibernate.format_sql" value="false"/>

        <property name="hibernate.cache.use_second_level_cache" value="false"/>

        <property name="hibernate.archive.autodetection" value="true"/>
    </properties>
</persistence-unit>

  1. veuillez noter les informations mentionnées dans la balise <persistance> et la version doit être 2.1.
  2. veuillez noter la balise name <persistance-unit>, le nom est mentionné comme "sample" . Ce nom doit être utilisé exactement de la même manière lors du chargement de votre

EntityManagerFactor = Persistance.createEntityManagerFactory ("échantillon"); . "sample" peut être modifié selon votre convention de dénomination.

Créez maintenant une classe Entity. avec le nom selon mon exemple UserDetail, dans le package org.pramod.data.object

UserDetail.java

package org.pramod.data.object;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "user_detail")
public class UserDetail {
    @Id
    @Column(name="user_id")
    private int id;
    @Column(name="user_name")
    private String userName;

    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }   
    @Override
    public String toString() {
       return "UserDetail [id=" + id + ", userName=" + userName + "]";
    }
}

Créez maintenant une classe avec la méthode main.

HibernateTest.java

package org.pramod.hibernate;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import org.pramod.data.object.UserDetail;

public class HibernateTest {
    private static EntityManagerFactory entityManagerFactory;

    public static void main(String[] args)  {
        UserDetail user = new UserDetail();
        user.setId(1);
        user.setUserName("Pramod Sharma");

        try {
            entityManagerFactory = Persistence.createEntityManagerFactory("sample");
            EntityManager entityManager = entityManagerFactory.createEntityManager();
            entityManager.getTransaction().begin();
            entityManager.persist( user );
            entityManager.getTransaction().commit();
            System.out.println("successfull");
            entityManager.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

}

La sortie sera

UserDetail [id=1, userName=Pramod Sharma]
Hibernate: drop table if exists user_details
Hibernate: create table user_details (user_id integer not null, user_name varchar(255), primary key (user_id))
Hibernate: insert into user_details (user_name, user_id) values (?, ?)
successfull
Prayag Sharma
la source
1

Dans mon cas, auparavant j'utilisais l'idée pour générer une entité par schéma de base de données, et le persistence.xmlest automatiquement généré dans src/main/java/META-INF, et selon https://stackoverflow.com/a/23890419/10701129 , je le déplace verssrc/main/resources/META-INF , également marqué META-INF comme racine source. Ça marche pour moi.

Mais simplement marquer META-INF d'origine (c'est-à-dire src / main / java / META-INF) comme racine source, ne fonctionne pas, ce qui me trouble.

et voici la structure: entrez la description de l'image ici

fooool
la source
0

S'il y a des noms différents Persistence.createEntityManagerFactory("JPAService")dans des classes différentes, vous obtenez l'erreur. En refactoring, il est possible d'obtenir des noms différents, ce qui était dans mon cas. Dans une classe la classe Auto-générée Persistence.createEntityManagerFactory("JPAService")dans private void initComponents(), ContactsTable différait de la Persistence.createEntityManagerFactory("JPAServiceExtended")classe DBManager.

boursier
la source
0

Le mien a été résolu en ajoutant des informations dans persistence.xml, par exemple <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>, puis en vous assurant que vous avez la bibliothèque sur le chemin de classe, par exemple dans Maven, ajoutez une dépendance comme

<dependency>
  <groupId>org.eclipse.persistence</groupId>
  <artifactId>eclipselink</artifactId>
  <version>2.5.0</version>
</dependency>
Dhwaneel
la source
0

Vérifiez le nom de l'unité pérenne

<persistence-unit name="com.myapp.model.jpa"
    transaction-type="RESOURCE_LOCAL">    
public static final String PERSISTENCE_UNIT_NAME = "com.myapp.model.jpa";
Persistence.createEntityManagerFactory(**PERSISTENCE_UNIT_NAME**);
Atul Jain
la source
0

Dans mon cas, il s'agissait d'une erreur dans deux propriétés comme ci-dessous. Lorsque je les ai modifiés, «Aucun fournisseur de persistance pour EntityManager nommé» a disparu.

Vous pouvez donc essayer de tester la connexion avec vos propriétés pour vérifier si tout est correct.

<property name="javax.persistence.jdbc.url" value="...”/>
<property name="javax.persistence.jdbc.password" value="...”/>

Erreur étrange, j'étais totalement confus à cause de cela.

Wojtek Piróg
la source
0

Essayez également de copier manuellement le fichier persistence.xml dans le dossier <project root>\bin\META-INF. Cela a résolu le problème dans Eclipse Neon avec l' EclipseLink 2.5.2utilisation d'un simple projet de plug-in.

Klendatho
la source
0

J'ai eu le même problème, mais cela a fonctionné pour moi:

mvn install -e  -Dmaven.repo.local=$WORKSPACE/.repository.

NB: La commande maven ci-dessus réinstalle toutes les dépendances de votre projet à partir de zéro. Votre console sera chargée de journaux détaillés en raison de la demande réseau que maven fait.

keem sisi
la source