No Persistence provider for EntityManager no HSQLDB

2 respostas
W

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;
	}
}
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_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

2 Respostas

alanbrasil1984

amigão acredito que o erro seja isso no seu .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_1_0.xsd"  
    version="1.0">  
    <persistence-unit name="livraria" transaction-type="RESOURCE_LOCAL">  
        <provider>org.hibernate.ejb.HibernatePersistence</provider> 

[b]<class>entidades.Editora</class> [/b]
        <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>

espero ter ajudado.

W

alanbrasil1984, tb acho que pode ser o xml, mas onde? Já olhei e não achei onde pode estar errado. Acho que pode ser a url do HSQLDB, pois não sei como trabalhar com esse BD.

Criado 22 de fevereiro de 2011
Ultima resposta 22 de fev. de 2011
Respostas 2
Participantes 2