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.