Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
11
respostas

Dúvida no Ex. 9 da Aula 2 - Configuração e inicialização do JPA

Estou fazendo um projeto utilizando o maven, porém está ocorrendo o seguinte erro ao compilar a classe JPAUtil:

Exception in thread "main" java.lang.ExceptionInInitializerError at br.com.paulistano.dao.CsvDao.buscaPeloIdConta(CsvDao.java:38) at br.com.paulistano.dao.CsvDao.inserirDados(CsvDao.java:18) at br.com.paulistano.principal.TesteJPA.main(TesteJPA.java:17) Caused by: javax.persistence.PersistenceException: No Persistence provider for EntityManager named bcotst-unit at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:61) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39) at br.com.paulistano.util.JPAUtil.(JPAUtil.java:10) ... 3 more

No meu projeto o META-INF está dentro do pacote src/main/resources, porém mesmo assim está ocorrendo o erro acima.

Gostaria de saber se é necessário fazer outra configuração além dessa para fazer funcionar o JPA com Maven?

Abaixo dados da classe

public class JPAUtil {

    private static EntityManagerFactory entityManagerFactory = Persistence
            .createEntityManagerFactory("bcotst-unit");

    public EntityManager getEntityManager() {
        return entityManagerFactory.createEntityManager();
    }

        </properties>

    </persistence-unit>

</persistence>



}
11 respostas

Oi Renato,

provável que falte uma dependência no pom.xml.

vc adicionou o hibernate-entitymanager?

http://mvnrepository.com/artifact/org.hibernate/hibernate-entitymanager

abs

Olá Nico,

Eu fiz o que voce me disse para fazer e agora dá esse erro

Exception in thread "main" java.lang.NoClassDefFoundError: org/hibernate/internal/util/xml/XsdException at org.hibernate.jpa.HibernatePersistenceProvider.getEntityManagerFactoryBuilderOrNull(HibernatePersistenceProvider.java:80) at org.hibernate.jpa.HibernatePersistenceProvider.getEntityManagerFactoryBuilderOrNull(HibernatePersistenceProvider.java:71) at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:52) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:55) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39) at br.com.paulistano.util.JPAUtil.(JPAUtil.java:10) at br.com.paulistano.dao.CsvDao.buscaPeloIdConta(CsvDao.java:38) at br.com.paulistano.dao.CsvDao.inserirDados(CsvDao.java:18) at br.com.paulistano.principal.TesteJPA.main(TesteJPA.java:17) Caused by: java.lang.ClassNotFoundException: org.hibernate.internal.util.xml.XsdException at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ... 9 more

Oi Renato, coloque aqui que o seu pom.xml!

Use ``` para formatar e facilitar a leitura.

vlw, Nico

'''

4.0.0 br.org.paulistano.maven csvParaOracle jar 0.0.1-SNAPSHOT http://maven.apache.org

UTF-8

maven-compiler-plugin 3.1 1.7 1.7

org.hibernate hibernate-core 4.3.10.Final

com.oracle ojdbc6 11.2.0.3

net.sf.opencsv opencsv 2.3

mysql mysql-connector-java 5.1.37

org.hibernate hibernate-entitymanager 5.0.5.Final

'''


<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>br.org.paulistano.maven</groupId>
    <artifactId>csvParaOracle</artifactId>
    <packaging>jar</packaging>
    <version>0.0.1-SNAPSHOT</version>
    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

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

        <dependency>
            <groupId>com.oracle</groupId>
            <artifactId>ojdbc6</artifactId>
            <version>11.2.0.3</version>
        </dependency>

        <dependency>
            <groupId>net.sf.opencsv</groupId>
            <artifactId>opencsv</artifactId>
            <version>2.3</version>
        </dependency>

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

        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>5.0.5.Final</version>
        </dependency>


    </dependencies>

</project>

E essa é a minha classe JpaUtil, onde ao executar o createEntityManagerFactory("bcotst-unit"), ele acusa erro

package br.com.paulistano.util;

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

public class JPAUtil {

    private static EntityManagerFactory entityManagerFactory = Persistence
            .createEntityManagerFactory("bcotst-unit");

    public EntityManager getEntityManager() {
        return entityManagerFactory.createEntityManager();
    }

}

Meu persistence.xml

<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="bcotst-unit">    

        <provider>org.hibernate.ejb.HibernatePersistence</provider>        
        <class>br.com.paulistano.modelo.PlcCtbConta</class>

        <properties>    
            <property name="javax.persistence.jdbc.driver" value="oracle.jdbc.OracleDriver" />
            <property name="javax.persistence.jdbc.url" value="jdbc:oracle:thin:@localhost:bcotst" />
            <property name="javax.persistence.jdbc.user" value="user" />            
            <property name="javax.persistence.jdbc.password" value="senha" />

            <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" />
            <property name="hibernate.hbm2ddl.auto" value="update" />
            <property name="hibernate.show_sql" value="false" />
            <property name="hibernate.format_sql" value="false" />
        </properties>

    </persistence-unit>

</persistence>
solução!

Oi Renato,

usa a mesma versão do hibernate nas dependencias hibernate-entitymanager e hibernate-core: 5.0.5.Final

E bem vindo ao famoso JAR HELL do mundo java :)

abs

Oi Renato, funcionou? Ou ainda JAR-HELL? \o/

abs

Olá Nico,

Desculpa não ter te respondido de imediato, problemas com o sinal da internet.

Então funcionou sim, porém ao invés de usar a versão 5.0.5, utilizei a 4.3.10, a versão 5.05 ainda dava o mesmo problema.

Mas, fora isso funcionou sim, obrigado !

Otimo Renato! Podemos fechar essa pergunta então?

E provavel que falte mais uma dependência quando usa a versão 5 do hibernate.

Abs, Nico