Amigos
Estou aprendendo hibernate com JPA e segui a documentação do hibernate para criar este simples HelloWorld.
Ja pesquisei aqui no forum e não consegui resolver o erro abaixo. Deve ser um erro realmente muito simples de resolver mas eu ainda sou um cara muito amador no java.
Por favor peço ajuda para não ficar tanto tempo parado já que pelos tópicos antigos não consegui resolver
Agradeço o apoio desde já
Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named sample
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:56)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:34)
at br.com.jpa.Fabrica.main(Fabrica.java:16)
Pelo que percebi normalmente este erro esta ligado ao fato do persistence.xml não estar em scr/META-INF/ mas o meu persistence.xml está.
Criei um New >> Folder e então criei , dentro da pasta src, a pasta META-INF e criei meu persistence.xml lá dentro
Abaixo o meu persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<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="sample" transaction-type="RESOURCE_LOCAL">
<class>br.com.jpa.vo.Tarefa</class>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
<property name="hibernate.hbm2ddl.auto" value="create-drop"/>
<property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver"/>
<property name="javax.persistence.jdbc.url" value = "jdbc:postgresql://localhost:5432/bdmac" />
<property name="javax.persistence.jdbc.user" value = "postgres" />
<property name="javax.persistence.jdbc.password" value = "sa" />
</properties>
</persistence-unit>
</persistence>
Minha Classe que faz todo o negócio:
package br.com.jpa;
import java.util.Date;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityManager;
import javax.persistence.Persistence;
import br.com.jpa.vo.Tarefa;
public class Fabrica {
public static void main(String[] args) {
// Use persistence.xml configuration
EntityManagerFactory emf = Persistence.createEntityManagerFactory("sample"); //O erro da logo aqui nesta primeira linha
EntityManager em = emf.createEntityManager(); // Retrieve an application managed entity manager
// Work with the EM
Tarefa tarefa = new Tarefa();
tarefa.setIdTarefa(29);
tarefa.setDataTarefa(new Date());
em.persist(tarefa);
em.close();
emf.close(); //close at application end
}
}
Minha classe de persistencia.:
package br.com.jpa.vo;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Id;
import javax.persistence.Entity;
@Entity
public class Tarefa implements Serializable{
private static final long serialVersionUID = 1L;
@Id
private int idTarefa;
private Date dataTarefa;
public Tarefa(){}
public int getIdTarefa() { return idTarefa; }
public void setIdTarefa(int idTarefa) { this.idTarefa = idTarefa; }
public Date getDataTarefa() { return dataTarefa; }
public void setDataTarefa(Date dataTarefa) { this.dataTarefa = dataTarefa; }
}
Não acredito que esteja faltando algum JAR mas pra adiantar ja vou colocar aqui todos os jars que eu faço referencia:
- postgresql-9.1.jdbc4.jar
- ejb3-persistence.jar
- hibernate3.jar
- slf4j-api-1.5.2.jar
- javassist-3.4.GA.jar
- commons-collections-3.1.jar
- dom4j-1.6.jar
- jta-1.1.jar
- antlr-2.7.6.jar
- slf4j-simple-1.5.2.jar
- hibernate-jpa-2.0-api-1.0.1.Final.jar