J'ai mon persistence.xml
avec le même nom en utilisant TopLink
sous le META-INF
ré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.
java
jpa
persistence
toplink
Robert A Henru
la source
la source
<provider/>
, tout en utilisant hibernate-4, vous devriez changer votre fournisseur<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
, voir stackoverflow.com/questions/23041964/… .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
/lib
fichier de votre application.la source
org.hibernate
artefactid groupidhibernate-entitymanager
org.eclipse.persistence.jpa
avec un test de portée.Assurez-vous que le
persistence.xml
fichier est dans le répertoire:<webroot>/WEB-INF/classes/META-INF
la source
J'en avais besoin dans mon fichier pom.xml:
la source
Face au même problème et n'a pas pu trouver de solution pendant assez longtemps. Dans mon cas, cela a aidé à remplacer
avec
A pris la solution d' ici
la source
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.
la source
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!la source
Conseil rapide:
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:
<provider>org.hibernate.ejb.HibernatePersistence</provider>
(comme décrit dans la réponse correcte de Chris: https://stackoverflow.com/a/1285436/784594 )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.
la source
Si vous utilisez Eclipse, assurez-vous que le modèle d'exclusion ne supprime pas votre
persistence.xml
dossier source sur le chemin de construction.MyProject/src/main/java -> Excluded: <your_pattern>
nœud de l'arborescence
Excluded: (None)
en sélectionnant le nœud et en cliquant sur le bouton Modifier ... sur la gauche.la source
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:
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
Module-info.java
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.
Le fichier persistence.xml doit être situé dans le bon répertoire pour:
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):
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:
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.
la source
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.
la source
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.
la source
Si vous utilisez Maven, il se peut qu'il ne recherche pas le bon endroit pour le dossier META-INF. D'autres ont mentionné la copie du dossier, mais une autre façon qui a fonctionné pour moi était de dire à Maven où le chercher, en utilisant la
<resources>
balise. Voir: http://maven.apache.org/plugins/maven-resources-plugin/examples/resource-directory.htmlla source
Cela se produit lorsque le gestionnaire d'entités tente de pointer vers de nombreuses unités de persistance. Suivez les étapes suivantes:
la source
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.
la source
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/persistence
et la version 2.1 à 2.0.Ça marche maintenant.
la source
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.
la source
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:
Même si j'avais changé le persistence.xml pour inclure le nouveau nom de propriété:
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é.
la source
Dans un contexte OSGi, il est nécessaire de lister vos unités de persistance dans le MANIFEST.MF du bundle, par exemple
Sinon, le bundle JPA ne saura pas que votre bundle contient des unités de persistance.
Voir http://wiki.eclipse.org/EclipseLink/Examples/OSGi/Developing_with_EclipseLink_OSGi_in_PDE .
la source
Vous avez besoin des fichiers jar suivants dans le classpath:
la source
Je viens de copier le META-INF dans src et j'ai travaillé!
la source
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/
Créez un fichier xml "persistence.xml" dans
VotreProjet / src / META-INF / persistence.xml
persistence.xml
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
Créez maintenant une classe avec la méthode main.
HibernateTest.java
La sortie sera
la source
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.xml
est automatiquement généré danssrc/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:
la source
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éePersistence.createEntityManagerFactory("JPAService")
dansprivate void initComponents()
, ContactsTable différait de laPersistence.createEntityManagerFactory("JPAServiceExtended")
classe DBManager.la source
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 commela source
Vérifiez le nom de l'unité pérenne
la source
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.
Erreur étrange, j'étais totalement confus à cause de cela.
la source
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.2
utilisation d'un simple projet de plug-in.la source
J'ai eu le même problème, mais cela a fonctionné pour moi:
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.
la source