Estou alguns anos atrasado para a festa aqui, mas acertei a mesma exceção ao tentar fazer o Hibernate 3.5.1 trabalhar com HSQLDB e um programa JavaFX para desktop. Consegui trabalhar com a ajuda deste tópico e com muitas tentativas e erros. Parece que você recebeu esse erro para uma variedade de problemas:
No Persistence provider for EntityManager named mick
Tentei criar os exemplos de tutorial de hibernação, mas como estava usando o Java 10, não consegui fazê-los construir e executar facilmente. Desisti disso, não querendo perder tempo resolvendo seus problemas. Configurar um arquivo module-info.java (Jigsaw) é outra bola de cabelo que muitas pessoas ainda não descobriram.
Um pouco confuso é que esses (abaixo) eram os únicos dois arquivos que eu precisava no meu arquivo build.gradle. A documentação do Hibernate não está clara sobre exatamente quais Jars você precisa incluir. O gerenciador de entidades estava causando confusão e não é mais necessário na versão mais recente do Hibernate, nem o javax.persistence-api. Observe que estou usando o Java 10 aqui, então tive que incluir o jaxb-api, para solucionar alguns erros de ligação ao xml, além de adicionar uma entrada para o módulo de persistência java no meu arquivo 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;
Com o hibernate 5.3.1, você não precisa especificar o provedor abaixo no seu arquivo persistence.xml. Se não for fornecido, o provedor de hibernação é escolhido por padrão.
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
O arquivo persistence.xml deve estar localizado no diretório correto para:
src/main/resources/META-INF/persistence.xml
Percorrer o código-fonte de hibernação no depurador Intellij, onde verifica um dialeto, também lançou a mesma exceção, devido a uma propriedade de dialeto ausente no arquivo persistence.xml. Eu adicionei isso (adicione o correto para o seu tipo de banco de dados):
<property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
Eu ainda recebi a mesma exceção depois disso, portanto, percorrer o depurador novamente no Intellij revelou que a entidade de teste que eu estava tentando persistir (exemplo simples de pai e filho) tinha anotações ausentes para os relacionamentos OneToMany, ManyToOne. Corrigi isso e a exceção foi embora e minhas entidades foram mantidas ok.
Aqui está meu persistence.xml final completo:
<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>
Eu provavelmente desperdicei cerca de meio dia nesta jóia. Meu conselho seria começar muito simples - uma única entidade de teste com um ou dois campos, pois parece que essa exceção pode ter muitas causas.