Llegué algunos años tarde a la fiesta aquí, pero llegué a la misma excepción al intentar que Hibernate 3.5.1 funcionara con HSQLDB y un programa JavaFX de escritorio. Lo hice funcionar con la ayuda de este hilo y mucha prueba y error. Parece que obtienes este error para una gran variedad de problemas:
No Persistence provider for EntityManager named mick
Traté de construir los ejemplos del tutorial de hibernación, pero debido a que estaba usando Java 10, no pude hacer que se construyeran y ejecutaran fácilmente. Renuncié a eso, no queriendo realmente perder el tiempo arreglando sus problemas. Configurar un archivo module-info.java (Jigsaw) es otra bola de pelo que muchas personas aún no han descubierto.
Algo confuso es que estos (a continuación) fueron los únicos dos archivos que necesitaba en mi archivo build.gradle. La documentación de Hibernate no es clara sobre exactamente qué jarras debe incluir. Entity-manager estaba causando confusión y ya no se requiere en la última versión de Hibernate, y tampoco lo es javax.persistence-api. Tenga en cuenta que estoy usando Java 10 aquí, así que tuve que incluir el jaxb-api, para evitar algunos errores de vinculación xml, así como agregar una entrada para el módulo de persistencia java en mi archivo 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;
Con hibernate 5.3.1 no necesita especificar el proveedor, a continuación, en su archivo persistence.xml. Si no se proporciona uno, el proveedor de Hibernate se elige de forma predeterminada.
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
El archivo persistence.xml debe ubicarse en el directorio correcto, de modo que:
src/main/resources/META-INF/persistence.xml
Pasar por el código fuente de hibernación en el depurador Intellij, donde busca un dialecto, también arrojó exactamente la misma excepción, debido a una propiedad de dialecto faltante en el archivo persistence.xml. Agregué esto (agregue el correcto para su tipo de base de datos):
<property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
Todavía obtuve la misma excepción después de esto, por lo que al pasar nuevamente por el depurador en Intellij revelé que la entidad de prueba que intentaba persistir (ejemplo simple padre-hijo) tenía anotaciones faltantes para las relaciones OneToMany, ManyToOne. Arreglé esto y la excepción desapareció y mis entidades persistieron bien.
Aquí está mi persistencia final completa.xml:
<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>
Probablemente desperdicié aproximadamente medio día en esta joya. Mi consejo sería comenzar de manera muy simple: una sola entidad de prueba con uno o dos campos, ya que parece que esta excepción puede tener muchas causas.