6
respostas

Podes me ajudar, já tentei resolver sozinho este problema mas não vejo solução.

Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named contas
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:85)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54)
    at br.com.alura.jpa.testes.TesteCriaTabelas.main(TesteCriaTabelas.java:11)
6 respostas

Olá. Tente remover a linha: "< provider>org.hibernate.jpa.HibernatePersistence</provider>"

Do arquivo persistence.xml

Tive problemas com a configuração, então segue o modo que eu configurei meu persistence.xml estou usando o MYSQL

<persistence xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
        http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
    version="2.0">

    <persistence-unit name="insira-nome-da-sua-persistencia">
    <!-- Implementação do JPA, no nessa caso Hibernate -->
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
        <class>br.com.alura.jpa.modelo.Classe</class>

        <properties>
            <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
                                                    <!--insira o caminho do seu banco correto-->
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/alura_jpa" />
            <property name="javax.persistence.jdbc.user" value="usuario" />
            <property name="javax.persistence.jdbc.password" value="senha" />

            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
            <property name="hibernate.hbm2ddl.auto" value="update" />
            <property name="hibernate.show_sql" value="true" />
            <property name="hibernate.format_sql" value="true" />

            <property name="hibernate.hbm2ddl.auto" value="update" />

        </properties>
    </persistence-unit>
</persistence>

espero ter ajudado.

Tentei fazer a resolução de ambos, sem sucesso ainda :(

Agora o erro é este

jul 03, 2020 1:58:50 PM org.hibernate.jpa.internal.util.LogHelper logPersistenceUnitInformation
INFO: HHH000204: Processing PersistenceUnitInfo [name: contas]
jul 03, 2020 1:58:50 PM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate ORM core version 5.4.18.Final
jul 03, 2020 1:58:50 PM org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {5.1.0.Final}
jul 03, 2020 1:58:51 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
WARN: HHH10001002: Using Hibernate built-in connection pool (not for production use!)
Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
jul 03, 2020 1:58:51 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001005: using driver [com.mysql.jdbc.Driver] at URL [jdbc:mysql://localhost:3306/alura_jpa?useTimezone=true&serverTimezone=UTC]
jul 03, 2020 1:58:51 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001001: Connection properties: {user=root, password=****}
jul 03, 2020 1:58:51 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001003: Autocommit mode: false
jul 03, 2020 1:58:51 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections <init>
INFO: HHH000115: Hibernate connection pool size: 20 (min=1)
jul 03, 2020 1:58:51 PM org.hibernate.dialect.Dialect <init>
INFO: HHH000400: Using dialect: org.hibernate.dialect.MariaDBDialect
jul 03, 2020 1:58:51 PM org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl getIsolatedConnection
INFO: HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@27dc79f7] for (non-JTA) DDL execution was not in auto-commit mode; the Connection 'local transaction' will be committed and the Connection will be set into auto-commit mode.
jul 03, 2020 1:58:51 PM org.hibernate.engine.transaction.jta.platform.internal.JtaPlatformInitiator initiateService
INFO: HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
jul 03, 2020 1:58:51 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PoolState stop
INFO: HHH10001008: Cleaning up connection pool [jdbc:mysql://localhost:3306/alura_jpa?useTimezone=true&serverTimezone=UTC]

Boa noite Luan isso não é um erro é um é aviso WARN, isso aconteceu porque você conseguiu criar a tabela conta em seu banco de dados , e depois executou o programa novamente apresentando essa mensagem, neste caso é um impedimento de criar uma tabela já existente, se você acessar seu banco de dados apagar a tabela e executar o comando novamente ele vai criar a tabela de novo, eu estava testando isso agora hehe

<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>

Verifique se a linha no arquivo persistence.xml está como no código acima. No arquivo da aula não está.

Verifique se o arquivo está no local correto. src/main/resources/META-INF

Até mais.