Estudo JSF e JPA

11 respostas
L

Bom dia, sei que hoje é dia das mães, mas como acordei cedo deu pra dar uma estudada antes de comemorar essa data.

Estou começando a estudar Pelo livro de JSF e JPA da casa do código, mas me deparei com 1 problema e como sou iniciante não entendi o erro:

Meu Persistence.xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
	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">
	<persistence-unit name="default">
		<properties>
			<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/fj21" />
			<property name="javax.persistence.jdbc.password" value="senha" />
			<property name="javax.persistence.jdbc.username" value="login" />
			<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
			<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
		</properties>
	</persistence-unit>
</persistence>

Minha Classe para a persistencia do automóvel:

import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;

public class PersistenciaAutomovel {

	public static void main(String[] args) {
		EntityManager em = JPAUtil.getEntityManager();

		Automovel auto = new Automovel();
		auto.setAnoFabricacao(2010);
		auto.setModelo("Ferrari");
		auto.setObservacoes("Nunca foi batido");

		EntityTransaction tx = em.getTransaction();
		tx.begin();
		em.persist(auto);
		tx.commit();

		em.close();

	}
}

Minha Classe JPAUtil:

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

public class JPAUtil {

	private static final EntityManagerFactory emf = Persistence.createEntityManagerFactory("default");

	public static EntityManager getEntityManager() {
		return emf.createEntityManager();
	}

}

Quando executo a classe que faz a persistencia do automóvel acontece o seguinte erro:

Exception in thread "main" java.lang.ExceptionInInitializerError
	at PersistenciaAutomovel.main(PersistenciaAutomovel.java:7)
Caused by: javax.persistence.PersistenceException: No Persistence provider for EntityManager named default
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:69)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47)
	at JPAUtil.<clinit>(JPAUtil.java:7)
	... 1 more

achei estranho esse erro pois as classes estão exatamente como as do livro, o .jar pro mysql esta no build patch mais não consigo identificar o erro, sera que alguem pode me da 1 luz?

11 Respostas

darksteel3000

Amigo, de cara deu pra ver que o erro diz que a classe JPAUtil não consegue encontrar uma configuração com o name “default”. Mas veja que no seu persistence, vc declarou um perssitence-unit com esse nome.

Sugiro que vc de uma revisada no que fez, e veja se colocou tudo nos lugares corretos.

L

Foi exatamente isso q eu estranhei, o nome ta o mesmo, então não vejo o pq de esta dando esse erro, eu cheguei a copiar e colar os codigos do livro, mas acontece esse erro, sera que é erro de configuração de algo do eclipse?

angeliski

cara, pode ser que o persistence esteja no “local” errado, por isso não esteja encontrando o XML. onde você colocou esse arquivo xml?!

L

COLOQUEI NA PASTA META-INF

L

ainda nao consegui saber o que é, sera que alguem descobriu?

darksteel3000

Cara, essa parada de META-INF, eu nunca uso, sempre coloco na raiz do projeto. Dentro do Sorce do java.

L

Vou tentar fazer isso

L

é, coloquei na pasta mas continua dando o mesmo erro, vo ve se acho um professor meu q deu aula de programação pra ver se ele consegue resolver meu problema, ate agora n consegui

rafadelnero

Você precisa mapear suas entidades no arquivo persistence.

L

Poderia me explicar melhor, pois sou iniciante no assunto.

rafadelnero

Um exemplo:
Você precisa especificar o caminho do pacote até sua classe, e devem ser todas:

<provider>org.hibernate.ejb.HibernatePersistence</provider> <class>br.universidadejava.jpa.exemplo.Usuario</class> <properties>

Criado 12 de maio de 2013
Ultima resposta 20 de mai. de 2013
Respostas 11
Participantes 4