Solucionado (ver solução)
Solucionado
(ver solução)
9
respostas

No Persistence provider for EntityManager named

Instalei o Wildfly 10 que ja vem com as bibliotecas em formato nativo (plugins internos ou modulos, não sei explicar). Funciona normalmente no start, é bem fácil de configurar, porem ao adaptar o exercício executando TesteJPA >>Run as Java Aplication, ele acusa um erro "No Persistence provider for EntityManager named", o persistence.xml esta no lugar certo e o codigo confere com o exercício, podem me ajudar?

persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1"
    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">
    <persistence-unit name="wolfportal">
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
        <class>br.com.wolf.modelo.Conta</class>

        <properties>
            <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/portalwolf" />
            <property name="javax.persistence.jdbc.user" value="root" />
            <property name="javax.persistence.jdbc.password" value="" />

            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
            <property name="hibernate.hbm2ddl.auto" value="create" />
            <property name="hibernate.show_sql" value="true" />
            <property name="hibernate.format_sql" value="true" />
            <property name="hibernate.connection.url"
                value="jdbc:mysql://&lt;hostname&gt;/&lt;database&gt;" />
            <property name="javax.persistence.schema-generation.create-source"
                value="script-then-metadata" />
        </properties>
    </persistence-unit>
</persistence>

Conta.java

package br.com.wolf.modelo;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;

@Entity
@SequenceGenerator(name = "SEQ_Conta", sequenceName = "SEQ_Conta", initialValue = 1)
public class Conta {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO, generator = "SEQ_Conta")
    private Integer idConta;
    private String emailConta;
    private String senhaConta;

    public Integer getIdConta() {
        return idConta;
    }

    public String getEmailConta() {
        return emailConta;
    }

    public void setEmailConta(String emailConta) {
        this.emailConta = emailConta;
    }

    public String getSenhaConta() {
        return senhaConta;
    }

    public void setSenhaConta(String senhaConta) {
        this.senhaConta = senhaConta;
    }

}

TesteJPA.java

package br.com.wolf.run;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

import br.com.wolf.modelo.Conta;


public class TesteJPA {

    public static void main(String[] args) {

        double inicio = System.currentTimeMillis();



        EntityManagerFactory emf = Persistence.createEntityManagerFactory("wolfportal");
        EntityManager em = emf.createEntityManager();

        Conta conta = new Conta();
        conta.setEmailConta("teste");
        conta.setSenhaConta("123");

        em.getTransaction().begin();

        em.persist(conta);

        em.getTransaction().commit();
        em.close();

        double fim = System.currentTimeMillis();
        System.out.println("Executado em: " + (fim - inicio) / 1000 + "s");

    }
}

Erro:

Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named wolfportal
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:61)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39)
    at br.com.wolf.run.TesteJPA.main(TesteJPA.java:18)
9 respostas

Oi Vagner, o persistence.xml está na pasta src/main/resources/META-INF? Estou assumindo que o projeto é com maven. Caso não seja, está na pasta src/META-INF?

Oi Alberto, obrigado por responder. Nao é Maven não, eu ainda nao aprendi a trabalhar com ele, o arquivo esta em src/META_INF. Acho mestranho o erro porque o Hibernate procura criar as trabelas, quando eu seto o parametro hibernate.hbm2ddl.auto de UPDATE para CREATE. Significa que ele esta lendo o persistense.xml, olha o Console quando starto o server, em 19:23:32,265 INFO ele le o xml:

19:23:32,265 INFO  [org.jboss.as.jpa] (MSC service thread 1-4) WFLYJPA0002: Read persistence.xml for wolfportal
19:23:32,971 INFO  [org.jboss.as.jpa] (ServerService Thread Pool -- 61) WFLYJPA0010: Starting Persistence Unit (phase 1 of 2) Service 'wolfportal.war#wolfportal'
19:23:33,801 INFO  [org.hibernate.jpa.internal.util.LogHelper] (ServerService Thread Pool -- 61) HHH000204: Processing PersistenceUnitInfo [
    name: wolfportal
    ...]
19:23:35,614 INFO  [org.jboss.weld.deployer] (MSC service thread 1-8) WFLYWELD0003: Processing weld deployment wolfportal.war
19:23:43,236 INFO  [org.hibernate.validator.internal.util.Version] (MSC service thread 1-8) HV000001: Hibernate Validator 5.2.3.Final
19:23:46,062 INFO  [org.hibernate.Version] (ServerService Thread Pool -- 61) HHH000412: Hibernate Core {5.0.7.Final}
19:23:46,065 INFO  [org.hibernate.cfg.Environment] (ServerService Thread Pool -- 61) HHH000206: hibernate.properties not found
19:23:46,372 INFO  [org.hibernate.cfg.Environment] (ServerService Thread Pool -- 61) HHH000021: Bytecode provider name : javassist
19:23:48,112 INFO  [org.hibernate.orm.deprecation] (ServerService Thread Pool -- 61) HHH90000001: Found usage of deprecated setting for specifying Scanner [hibernate.ejb.resource_scanner]; use [hibernate.archive.scanner] instead
19:23:48,300 INFO  [org.hibernate.annotations.common.Version] (ServerService Thread Pool -- 61) HCANN000001: Hibernate Commons Annotations {5.0.1.Final}
19:23:50,513 INFO  [org.jboss.weld.deployer] (MSC service thread 1-1) WFLYWELD0006: Starting Services for CDI deployment: wolfportal.war
19:23:51,828 INFO  [org.jboss.weld.Version] (MSC service thread 1-1) WELD-000900: 2.3.2 (Final)
19:23:52,070 INFO  [org.jboss.weld.deployer] (MSC service thread 1-8) WFLYWELD0009: Starting weld service for deployment wolfportal.war
19:23:55,157 INFO  [org.jboss.as.jpa] (ServerService Thread Pool -- 61) WFLYJPA0010: Starting Persistence Unit (phase 2 of 2) Service 'wolfportal.war#wolfportal'
19:23:56,341 INFO  [org.hibernate.dialect.Dialect] (ServerService Thread Pool -- 61) HHH000400: Using dialect: org.hibernate.dialect.MySQL5InnoDBDialect
19:23:56,498 INFO  [org.hibernate.envers.boot.internal.EnversServiceImpl] (ServerService Thread Pool -- 61) Envers integration enabled? : true
19:24:20,662 INFO  [org.hibernate.tool.hbm2ddl.SchemaExport] (ServerService Thread Pool -- 61) HHH000227: Running hbm2ddl schema export
19:24:20,675 INFO  [stdout] (ServerService Thread Pool -- 61) Hibernate: 
19:24:20,676 INFO  [stdout] (ServerService Thread Pool -- 61)     drop table if exists Conta

19:24:20,677 INFO  [stdout] (ServerService Thread Pool -- 61) Hibernate: 
19:24:20,678 INFO  [stdout] (ServerService Thread Pool -- 61)     drop table if exists SEQ_Conta

19:24:20,679 INFO  [stdout] (ServerService Thread Pool -- 61) Hibernate: 
19:24:20,679 INFO  [stdout] (ServerService Thread Pool -- 61)     create table Conta (
19:24:20,679 INFO  [stdout] (ServerService Thread Pool -- 61)         idConta integer not null,
19:24:20,679 INFO  [stdout] (ServerService Thread Pool -- 61)         emailConta varchar(255),
19:24:20,680 INFO  [stdout] (ServerService Thread Pool -- 61)         senhaConta varchar(255),
19:24:20,680 INFO  [stdout] (ServerService Thread Pool -- 61)         primary key (idConta)
19:24:20,680 INFO  [stdout] (ServerService Thread Pool -- 61)     ) ENGINE=InnoDB

19:24:20,682 INFO  [stdout] (ServerService Thread Pool -- 61) Hibernate: 
19:24:20,682 INFO  [stdout] (ServerService Thread Pool -- 61)     create table SEQ_Conta (
19:24:20,683 INFO  [stdout] (ServerService Thread Pool -- 61)         next_val bigint
19:24:20,683 INFO  [stdout] (ServerService Thread Pool -- 61)     ) ENGINE=InnoDB

19:24:20,683 INFO  [stdout] (ServerService Thread Pool -- 61) Hibernate: 
19:24:20,684 INFO  [stdout] (ServerService Thread Pool -- 61)     insert into SEQ_Conta values ( 1 )

19:24:20,687 INFO  [org.hibernate.tool.hbm2ddl.SchemaExport] (ServerService Thread Pool -- 61) HHH000230: Schema export complete
19:24:26,769 INFO  [javax.enterprise.resource.webcontainer.jsf.config] (ServerService Thread Pool -- 62) Inicializando Mojarra 2.2.12-jbossorg-2 20150729-1131 para o contexto '/wolfportal'
19:24:30,200 INFO  [org.wildfly.extension.undertow] (ServerService Thread Pool -- 62) WFLYUT0021: Registered web context: /wolfportal
19:24:30,455 INFO  [org.jboss.as.server] (ServerService Thread Pool -- 34) WFLYSRV0010: Deployed "wolfportal.war" (runtime-name : "wolfportal.war")
19:24:30,894 INFO  [org.jboss.as] (Controller Boot Thread) WFLYSRV0060: Http management interface listening on http://127.0.0.1:9990/management
19:24:30,896 INFO  [org.jboss.as] (Controller Boot Thread) WFLYSRV0051: Admin console listening on http://127.0.0.1:9990
19:24:30,897 INFO  [org.jboss.as] (Controller Boot Thread) WFLYSRV0025: WildFly Full 10.0.0.Final (WildFly Core 2.0.10.Final) started in 166348ms - Started 367 of 656 services (382 services are lazy, passive or on-demand)

você colocou todas as libs do hibernate?

Olá Vagner, Verifique se o nome da pasta está META_INF ou META-INF. O correto é META-INF.

Vagner esse problema geralmente é causado por falta de bibliotecas do hibernate. Ou teu arquivo de persistência o persistence.xml está com algum erro. 

Verifique se todas as bibliotecas estão em seu projeto.

antlr-2.7.7.jar
dom4j-1.6.1.jar
hibernate-cmmons-annotations-4.0.1.Final.jar
hibernate-core-4.1.9.Final.jar
hibernate-entitymanager-4.1.9.Final.jar
hibernate-jpa-2.0-api-1.0.1.Final.jar
hsqldb.jar
javassist-3.17.1-GA.jar
jboss-logging-3.1.0.GA.jar
jboss-transaction-api_1.1_spec-1.0.0.Final.jar
mysql-connector-java-5.1.7-bin.jar
solução!

O meu projeto também não estava funcionando. A biblioteca hibernate-entitymanager não está vindo no pacote de download do hibernate-release-5.2.2.Final. Será um bug? ou mudou a forma de trabalhar? Eu copiei as bibliotecas disponibilizadas pelo curso no link abaixo e funcionou. https://s3.amazonaws.com/caelum-online-public/JPA/financas-libs.zip

Tive o mesmo problema. A solução que encontrei usando a versão mais nova do hibernate foi alterando o provider!

fica assim:

org.hibernate.jpa.HibernatePersistenceProvider
org.hibernate.jpa.HibernatePersistenceProvider

Luis Henrique, obrigado sua dica resolveu meu problema, fiz o download das ultimas atualizações direto no site do Hibernate e mesmo assim não funcionou, depois que modifiquei o provider resolveu meu problema de criar a tabela porem para adicionar dados não esta adicionando.

Então, depois que eu respondi sua dúvida me ensinaram que nessa nova versão do hibernate vc nem precisa colocar o provider. Sobre adicionar os dados vc teria que ser mais especifico.... sou muito iniciante em hibernate. O Unico que consigo pensar é se vc inicia a transacao, depois persiste no banco de dados o que quer e depois commita a transação. Esses tres passos sao importantes.