Olá pessoal, gostaria de uma ajuda. Estou tentando fazer uns projetos JSF e JPA de umas apostilas, sendo uma delas da Caelum.
Estou tentando usar o HSQLDB por não ter permissão de instalar o MySQL, mas quando rodo a classe GeraTabelas dá o erro:
Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named livraria
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:55)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:33)
at br.com.jpahibernate.main.GeraTabelas.main(GeraTabelas.java:9)
Segue abaixo toda a configuração que fiz pra ver se detectam algum erro, já olhei vários tópicos e não consegui resolver. Obrigado.
- Criei um java project de nome JPA2-Hibernate
- Dentro do src criei o arquivo log4j.properties e criei uma pasta META-INF onde coloquei o persistence.xml
- Na raiz do projeto, criei uma pasta lib onde acrescentei os jar´s e adicionei ao Build Path, dentro os jar´s estão os do hibernate e o hsqldb.jar
Segue as classes:
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
public class GeraTabelas {
public static void main(String[] args) {
EntityManagerFactory factory = Persistence.createEntityManagerFactory("livraria");
factory.close();
}
}
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class Editora {
@Id @GeneratedValue
private Long id;
private String nome;
private String email;
public Long getId() {
return id;
}
public String getNome() {
return nome;
}
public String getEmail() {
return email;
}
public void setId(Long id) {
this.id = id;
}
public void setNome(String nome) {
this.nome = nome;
}
public void setEmail(String email) {
this.email = email;
}
}
<?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="livraria" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
<property name="hibernate.hbm2ddl.auto" value="create"/>
<property name="javax.persistence.jdbc.driver" value="org.hsqldb.jdbcDriver"/>
<property name="javax.persistence.jdbc.user" value="SA"/>
<property name="javax.persistence.jdbc.password" value=""/>
<property name="javax.persistence.jdbc.url" value="jdbc:hsqldb:file:/livraria/"/>
</properties>
</persistence-unit>
</persistence>
Configurações do HSLQDB:
Como não tenho permissão de criar variável de ambiente de sistema, criei nas variáveis de usuário:
HSQLDB_HOME
D:\hsqldb\lib\hsqldb.jar
- Rodei o runManagerSwing.bat
- criei um banco de nome livraria
- Na interface do swing do HSQL aparece:
---jdbc:hsqldb:file:/livraria/
------Properties
---------User:SA
---------ReadOnly:false
---------AutoCommit:true
---------Driver:HSQL Database Engine Driver
---------Product:HSQL Database Engine
---------Version:2.0.0