Galera, estou tentando gerar uma tabela usando JPA com Hibernate, porém está sendo retornado uma exceção.
log4j:WARN No appenders could be found for logger (org.jboss.logging).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named tarefas
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:69)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47)
at br.com.caelum.tarefas.jpa.GeraTabelas.main(GeraTabelas.java:11)
Alguém pode me ajudar?
@Luccas_Oliveira poderia enviar o mapeamento das suas classes ?
No caso envie o código da classe tarefas e demais classes modelos.
Também senti falta do .JAR referente ao JDBC do PostgreeSQL
O seu persistence.xml parece estar OK.
Fico no aguardo por mais detalhes.
package br.com.caelum.tarefas.model;
import java.util.Calendar;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import org.springframework.format.annotation.DateTimeFormat;
@Entity
@Table(name = "tarefa")
public class Tarefa {
@Id
@GeneratedValue
private Long id;
@NotNull
@Size(min = 5, message = "Campo obrigatório! Informe no minimo 5 caracteres!")
private String descricao;
private boolean finalizado;
/**
* Para o Spring MVC saber converter automaticamente a data no formato
* brasileiro para um Calendar é preciso usar a anotação @DateTimeFormat.
*/
@DateTimeFormat(pattern = "dd/MM/yyyy")
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "data_finalizacao")
private Calendar dataFinalizacao;
public Tarefa() {
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public boolean isFinalizado() {
return finalizado;
}
public void setFinalizado(boolean finalizado) {
this.finalizado = finalizado;
}
public Calendar getDataFinalizacao() {
return dataFinalizacao;
}
public void setDataFinalizacao(Calendar dataFinalizacao) {
this.dataFinalizacao = dataFinalizacao;
}
}
package br.com.caelum.tarefas.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();
}
}
@Matt_Philipe Estou postando o model Tarefa (por enquento é o model que estou usando) para ver se você consegue me dar uma explicação exata, por favor, pois baixei a ultima versão dos *.jar’s do Hibernate mas não funcionou, porém seguindo um post aqui do GUJ (SOLUÇÃO- Erro: No Persistence provider for EntityManager named) acabou funcionando quando troquei as bibliotecas (jar’s) para essa versão mais antiga (hibernate-release-4.3.5.Final.zip).
Obs.: No primeiro print realmente não consta o jar do postgresql, mas me atentei a essa questão e já havia adicionado.
@Luccas_Oliveira segue alterações que fiz aqui, e funcionou perfeitamente.
Única diferença é que estou usando MySQL (acredito que para este cenário não faz diferença alguma).
O que faltou foi criar um EntityManager para poder fazer a transação com seu banco de dados.
Fiz algumas alterações nos mapeamentos da sua classe Tarefa pois você estava usando anotações do SPRING MVC mas a sua pergunta é sobre o Hibernate, então usei exclusivamente annotations do framework em questão :
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
public class GeraTabelas {
public static void main(String[] args) {
EntityManagerFactory factory = Persistence.createEntityManagerFactory("tarefas");
EntityManager eManager = factory.createEntityManager();
eManager.getTransaction().begin();
eManager.close();
}
}
Classe Tarefa :
import java.util.Calendar;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
@Entity
@Table(name = "tarefa")
public class Tarefa {
@Id
@GeneratedValue
private Long id;
@Column(nullable = false, length = 5)
private String descricao;
@Column
private boolean finalizado;
/**
* Para o Spring MVC saber converter automaticamente a data no formato
* brasileiro para um Calendar é preciso usar a anotação @DateTimeFormat.
*/
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "data_finalizacao")
private Calendar dataFinalizacao;
public Tarefa() {
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public boolean isFinalizado() {
return finalizado;
}
public void setFinalizado(boolean finalizado) {
this.finalizado = finalizado;
}
public Calendar getDataFinalizacao() {
return dataFinalizacao;
}
public void setDataFinalizacao(Calendar dataFinalizacao) {
this.dataFinalizacao = dataFinalizacao;
}
}`
Tabela criada no banco : 
Saudações !
@Matt_Philipe obrigado pelo retorno!
Irei testar e posteriormente posto aqui o resultado.