1
resposta

Exception with Persistence

Olá,

Segui todos os passos indicados no curso e conferi o código com os commits realizados. Está ocorrendo um exception do hibernate indicando que a persistência com nome alugames não existe. Parece que falta alguma biblioteca do hibernate, mas não sei exatamente qual pois adicionei a que foi indicado no curso no pom.xml do meu projeto. Porem o estranho é que substituindo o import do ( javax.persistence.* pelo jakarta.persistence.* ) o sistema roda corretamente. Acredito que não seja um problema usar essa biblioteca jakarta com o intellij. Então minha dúvida é qual biblioteca está faltando para funcionar com o javax.persistence no intellij?

    val manager = Banco.getEntityManager()
    val jogoDAO = JogosDAO(manager)                                  <<-----
    jogoDAO.adicionar(jogo)
    // método responsável por criar um novo gerenciador de conexão com base no arquivo persistence.xml
    fun getEntityManager(): EntityManager {
        val factory: EntityManagerFactory = Persistence.createEntityManagerFactory("alugames")              <<----                
        return factory.createEntityManager()
    }

Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named alugames at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:85) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54) at br.com.alura.alugames.dados.Banco.getEntityManager(Banco.kt:11) at br.com.alura.alugames.principal.TesteBancoKt.main(TesteBanco.kt:16) at br.com.alura.alugames.principal.TesteBancoKt.main(TesteBanco.kt)

parte do repositório de dependências no pom.xml do projeto:

    <dependencies>
        <dependency>
            <groupId>org.jetbrains.kotlin</groupId>
            <artifactId>kotlin-test-junit5</artifactId>
            <version>1.9.0</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>5.9.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.jetbrains.kotlin</groupId>
            <artifactId>kotlin-stdlib-jdk8</artifactId>
            <version>1.9.0</version>
        </dependency>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.10.1</version>
            <scope>compile</scope>
        </dependency>

        <!-- https://mvnrepository.com/artifact/javax.persistence/javax.persistence-api -->
        <dependency>
            <groupId>javax.persistence</groupId>
            <artifactId>javax.persistence-api</artifactId>
            <version>2.2</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.33</version>
        </dependency>

        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>6.3.1.Final</version>
        </dependency>

    </dependencies>
1 resposta

Oi

Uma maneira de resolver isso é verificar se você adicionou todas as partes necessárias corretamente no seu arquivo pom.xml. No caso do Hibernate, é importante incluir a dependência do provedor de persistência, que neste caso é o Hibernate Core.

No seu arquivo pom.xml, parece que você já adicionou a dependência do Hibernate Core, mas é fundamental conferir se a versão que você está usando é compatível com a versão do Hibernate no seu projeto. Você mencionou estar usando a versão 6.3.1.Final do Hibernate Core, então confirme se ela é compatível com a versão do Hibernate que você está utilizando.

Além disso, certifique-se de que a dependência do provedor de persistência javax.persistence-api também está corretamente adicionada no seu arquivo pom.xml, o que parece estar correto pelo que foi compartilhado.

Outra sugestão é verificar se o arquivo persistence.xml está configurado corretamente. Confira se o nome do provedor de persistência está correto e se as configurações de conexão com o banco de dados estão configuradas adequadamente.