Ao Executar classe com Hibernate e JPA - java.lang.ExceptionInInitializerError

Pessoal alguem saberia o motivo do erro , já verifiquei o persistence.xml esta ok , uso o maven tambem esta ok , fiz uma tela de login e funciona porem ao criar uma tela de insert da este erro :

Exception in thread “main” java.lang.ExceptionInInitializerError
at br.com.fecorp.reinf.DAO.DaoGenerico.(DaoGenerico.java:10)
at br.com.fecorp.testclasse.InsertApplication.main(InsertApplication.java:13)
Caused by: javax.persistence.PersistenceException: No Persistence provider for EntityManager named PersistenciaPU
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:61)

Verifique se no seu persistence.xml o persistence provider esta com o nome PersistenciaPU.

Veja: SOLUÇÃO- Erro: No Persistence provider for EntityManager named

Qual é a versão do seu Hibernate?
É necessário declarar um provider no arquivo persistence.xml, que pode ser este, caso sua versão seja 5.2.x ou superior

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

ou este para versões inferiores

<provider>org.hibernate.ejb.HibernatePersistence</provider>

Cara veja como esta meu Persistence.xml

<?xml version="1.0" encoding="UTF-8"?>

<persistence-unit name="PersistenciaPU" transaction-type="RESOURCE_LOCAL">


	<!-- provedor/implementacao do JPA -->
	<provider>org.hibernate.ejb.HibernatePersistence</provider>
	
	<!-- entidade mapeada -->
	<class>br.com.empresa.control.Usuario</class>
	<class>br.com.empresa.model.Pessoa</class>

	<properties>
		<!-- dados da conexao -->
		<property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver" />
		<property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost:5432/dbReinf" />
		<property name="javax.persistence.jdbc.user" value="postgres" />
		<property name="javax.persistence.jdbc.password" value="fecorp" />

		<!-- propriedades do hibernate -->
		<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
		<property name="hibernate.connection.shutdown" value="true" />
		<property name="hibernate.show_sql" value="false" />
		<property name="hibernate.format_sql" value="false" />
		
		<!-- atualiza o banco, gera as tabelas se for preciso -->
		 <property name="hibernate.hbm2ddl.auto" value="update" />
		

	</properties>
</persistence-unit>

Novamente leia o post SOLUÇÃO- Erro: No Persistence provider for EntityManager named

Lá o problema era o mesmo que o seu e foi resolvido.

No caso dele bastou adicionar a biblioteca jboss-transaction-api_1.1_spec-1.0.0.Final.jar que o problema foi sanado.

Ou também atualizar o hibernate com os jars mais novos.

Qual é a sua versão do Hibernate??

Hibernate 5.0

Esse erro pode ser de bibliotecas exclui as libs do maven e deixa ele gerar novamente.

Tudo bem , Fiz isto exclui as libs do maven e deixa ele gerar novamente e o mesmo erro

  • Atualizei as Libs do Hibernate e nada
  • instalei jboss-transaction-api_1.1_spec-1.0.0.Final.jar e nada
    Mesmo erro Estranho né

Mesmo erro

Estranho

Faça mais um teste.

Adicione o jar hibernate-entitymanager-4.x.x.jar no seu classpath

1 curtida

vc trocou o provider ?

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

ou então manda o sua classe onde vc chama o seu PU para criar o entitymanager.

Talvez isso funcione…

Troquei o provider como falou e olha o erro agora

Exception in thread “main” java.lang.ExceptionInInitializerError
at br.com.fecorp.reinf.DAO.DaoGenerico.(DaoGenerico.java:10)
at br.com.fecorp.testclasse.InsertApplication.main(InsertApplication.java:13)
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: PersistenciaPU] Unable to build Hibernate SessionFactory
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.persistenceException(EntityManagerFactoryBuilderImpl.java:967)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:892)
at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:58)
at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:54)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:55)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39)
at br.com.fecorp.reinf.connection.ConnectionFactory.(ConnectionFactory.java:9)
… 2 more
Caused by: org.hibernate.cfg.beanvalidation.IntegrationException: Error activating Bean Validation integration
at org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.integrate(BeanValidationIntegrator.java:138)
at org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:282)
at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:452)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:889)
… 7 more
Caused by: java.lang.NoClassDefFoundError: javax/validation/ParameterNameProvider
at org.hibernate.validator.HibernateValidator.createGenericConfiguration(HibernateValidator.java:33)
at javax.validation.Validation$GenericBootstrapImpl.configure(Validation.java:269)
at javax.validation.Validation.buildDefaultValidatorFactory(Validation.java:111)
at org.hibernate.cfg.beanvalidation.TypeSafeActivator.getValidatorFactory(TypeSafeActivator.java:463)
at org.hibernate.cfg.beanvalidation.TypeSafeActivator.activate(TypeSafeActivator.java:84)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.integrate(BeanValidationIntegrator.java:132)
… 10 more
Caused by: java.lang.ClassNotFoundException: javax.validation.ParameterNameProvider
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
… 20 more

Se coloco este : org.hibernate.jpa.HibernatePersistenceProvider

Volte com o antigo provider foi só um teste…

vc colocou a lib que o eduMatis mencionou.

Faça mais um teste.

Adicione o jar hibernate-entitymanager-5.x.x.jar

manda sua classe que cria o entitymanagerfactory

package br.com.fecorp.reinf.connection;

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

public class ConnectionFactory {

private static EntityManagerFactory factory = Persistence.createEntityManagerFactory("PersistenciaPU");;

public static EntityManager getEntityManager(){
	return factory.createEntityManager();
}

}

1 curtida

Até ai tudo certo.

Adicione o jar como mencionei mais acima.

Se seu hibernate estiver na versão 5 use hibernate-entitymanager-5.x.x.jar.

1 curtida

Pelo que estou vendo está correto, o que vc pode tentar fazer é atualizar o seu hibernate para o 5.2 e verificar se todas libs estão baixadas

lembrando de colocar o provider : <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>