Hibernate: Erro "No Persistence provider for EntityManager"

4 respostas
PV1

Pessoal,

Ontem perdi o dia todo tentando resolver esse problema. Tô aprendendo hibernate pra um projeto de trabalho, seguindo um material disponível pela Caelum:
[url]http://www.caelum.com.br/apostila-java-web/uma-introducao-pratica-ao-jpa-com-hibernate/#14-8-exercicios-configurando-o-jpa-e-gerando-o-schema-do-banco[/url]

Segui os passos descritos, mas caí nesse erro e não sei mais o que tentar. Minha classe que deve ser persistida é:

package br.com.hibernate;

import java.util.Calendar;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import org.hibernate.annotations.DynamicUpdate;

@Entity
@DynamicUpdate
public class Tarefa {
	  
	  @Id
	  @GeneratedValue
	  private Long id;
	  
	  private String descricao;
	  private boolean finalizado;
	  
	  @Temporal(TemporalType.DATE)
	  private Calendar dataFinalizacao;

}

A classe que cria uma tabela:

package br.com.jpa;

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


public class GeraTabelas {
	public static void main(String[] args) {
	    EntityManagerFactory factory = Persistence.
	          createEntityManagerFactory("tarefas");

	    factory.close();
	  }

}

E o 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="tarefas">

   <!-- provedor/implementacao do JPA -->  
   <provider>org.hibernate.ejb.HibernatePersistence</provider>

    <!-- entidade mapaeada --> 
   <class>br.com.hibernate.Tarefa</class>

   <properties>
   <!-- dados da conexao --> 
   <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
  <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/test" />
  <property name="javax.persistence.jdbc.user" value="root" />
  <property name="javax.persistence.jdbc.password" value="issue51" />

     <!-- propriedades do hibernate --> 
   <property name="hibernate.dialect" 
              value="org.hibernate.dialect.MySQL5InnoDBDialect" />
  <property name="hibernate.show_sql" value="true" />
  <property name="hibernate.format_sql" value="true" />

    <!-- atualiza o banco, gera as tableas se for preciso --> 
  <property name="hibernate.hbm2ddl.auto" value="update" />
    
   </properties>
 </persistence-unit>
</persistence>

que foi todo tirado do tutorial linkado, só mudei pra conectar no meu BD.
Pesquisando vi que esse erro pode ser várias coisas, já busquei .jars diferentes, já mudei o local do xml pra Java Resources -> src -> META-INF -> persistence.xml e nada.

A lista de jars que tenho:

antlr-2.7.6.jar
commons-collections-3.2.1.jar
dom4j-1.6.1.jar
hibernate-commons-annotations-4.0.2.Final.jar
hibernate-core-4.2.2.Final.jar
hibernate-jpa-2.0-api-1.0.1.Final.jar
javassist-3.15.0-GA.jar
jta-1.1.jar
mysql-connector-java-5.1.25-bin.jar

Valeu mesmo qualquer força

4 Respostas

tmvolpato

faltou o .jar do hibernate-entitymanager

PV1

Valeu mesmo,

Seria o .jar hibernate-entitymanager-4.1.3.Final-souces.jar ?

quando executo a lista de erros aumenta muito. Acho que se for usar isso, deve precisar mudar alguma coisa, não?

Me falaram também que eu precisaria criar uma classe EntityManager.

Enfim, agora a lista de erros cresceu muito:

Exception in thread "main" javax.persistence.PersistenceException: java.lang.ClassNotFoundException: org.hibernate.ejb.HibernatePersistence at javax.persistence.spi.PersistenceProviderResolverHolder$PersistenceProviderResolverPerClassLoader$CachingPersistenceProviderResolver.loadResolverClasses(PersistenceProviderResolverHolder.java:168) at javax.persistence.spi.PersistenceProviderResolverHolder$PersistenceProviderResolverPerClassLoader$CachingPersistenceProviderResolver.<init>(PersistenceProviderResolverHolder.java:130) at javax.persistence.spi.PersistenceProviderResolverHolder$PersistenceProviderResolverPerClassLoader.getPersistenceProviders(PersistenceProviderResolverHolder.java:88) at javax.persistence.Persistence.getProviders(Persistence.java:75) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:61) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47) at br.com.jpa.GeraTabelas.main(GeraTabelas.java:10) Caused by: java.lang.ClassNotFoundException: org.hibernate.ejb.HibernatePersistence at java.net.URLClassLoader$1.run(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) 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) at javax.persistence.spi.PersistenceProviderResolverHolder$PersistenceProviderResolverPerClassLoader$CachingPersistenceProviderResolver.loadResolverClasses(PersistenceProviderResolverHolder.java:150) ... 6 more

tmvolpato

esso mesmo

adiciona o jar no projeto e na aplicação e dá um refresh
é para funcionar

o erro agora é clássico ele não está achando essa classe org.hibernate.ejb.HibernatePersistence

PV1

Valeu mesmo pela força…mas, o erro continua.

E agora esse .jar está no diretório das Libraries->EAR Libraries então acho que fiz certo.

Busquei algo sobre criar entity manager,diferenças entre SE e EE(que é o projeto aqui), mas o que fiz parece certo mesmo.

Criado 6 de junho de 2013
Ultima resposta 6 de jun. de 2013
Respostas 4
Participantes 2