Pessoal, bom dia!
Estou iniciando um projeto usando VRaptor + Hibernate e estou obtendo o erro descrito no titulo.
A stack é:
Caused by: javax.persistence.PersistenceException: No Persistence provider for EntityManager named usuario
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:56)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:34)
at br.com.disoft.dao.UsuarioDAO.<init>(UsuarioDAO.java:25)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:126)
... 53 more
O meu arquivo persistence.xml está na pasta src/META-INF:
<?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_1_0.xsd" version="1.0">
<persistence-unit name="usuario" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>br.com.disoft.usuario.Usuario</class>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
<property name="hibernate.connection.driver_class" value="org.postgresql.Driver" />
<property name="hibernate.connection.url" value="jdbc:postgresql://localhost:5432/*****" />
<property name="hibernate.connection.username" value="****" />
<property name="hibernate.connection.password" value="****"/>
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.archive.autodetection" value="class" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
<property name="hibernate.use_sql_comments" value="true" />
<property name="hibernate.current_session_context_class" value="thread"/>
</properties>
</persistence-unit>
</persistence>
minha classe Usuario:
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
@Entity
@Table(name="usuario")
@SequenceGenerator(name="SEQ",sequenceName="usuario_pkid_seq", initialValue=1, allocationSize=1)
public class Usuario {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator="SEQ")
@Column(name="id")
private int id;
@Column(name="login")
private String login;
@Column(name="password")
private String password;
@Column(name="nome")
private String nome;
@Column(name="sobrenome")
private String sobrenome;
@Column(name="ativo")
private boolean ativo;
@Column(name="tipo")
private String tipo;
// getters e setters omitidos
}
Minha classe UsuarioDAO:
import org.hibernate.Criteria;
import org.hibernate.Session;
import br.com.caelum.vraptor.ioc.Component;
import br.com.caelum.vraptor.ioc.SessionScoped;
import br.com.disoft.usuario.Usuario;
@SessionScoped
@Component
public class UsuarioDAO {
private EntityManagerFactory factory;
private EntityManager manager;
public UsuarioDAO() {
factory = Persistence.createEntityManagerFactory("usuario"); //ERRO ACUSADO AQUI
manager = factory.createEntityManager();
}
//Métodos omitidos
}
Alguém tem alguma idéia???
Muito obrigado.
