Javax.persistence.PersistenceException erro

5 respostas
N
Estou tentando fazer esse exercício:

persistence.xml

<persistence xmlns="http://java.sun.com/xml/ns/persistence"
	xmlns[code]: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"
	version="2.0">

	<persistence-unit name="controlefinancas">
		<provider>org.hibernate.ejb.HibernatePersistence</provider>
		<jta-data-source>java:/DefaultDS</jta-data-source>
		<class>br.com.caelum.financas.modelo.Conta</class>
		<class>br.com.caelum.financas.modelo.Movimentacao</class>
		
		<properties>
			<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLInnoDBDialect"/>
			<property name="session_factory_name" value="hibernate.SessionFactory"/>
			<property name="hibernate.hbm2ddl.auto" value="update"/>
			<property name="hibernate.show_sql" value="true"/>
			<property name="hibernate.format_sql" value="true"/>
			
			<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
			<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:8889/fj25"/>
			<property name="javax.persistence.jdbc.user" value="root"/>
			<property name="javax.persistence.jdbc.password" value="root"/>
		</properties>
	</persistence-unit>

</persistence>

Conta.java

@Entity
public class Conta {
	@Id
	@GeneratedValue()
	private Integer id;
	private String titular;
	private String agencia;
	private String numero;
	private String banco;
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getTitular() {
		return titular;
	}
	public void setTitular(String titular) {
		this.titular = titular;
	}
	public String getAgencia() {
		return agencia;
	}
	public void setAgencia(String agencia) {
		this.agencia = agencia;
	}
	public String getNumero() {
		return numero;
	}
	public void setNumero(String numero) {
		this.numero = numero;
	}
	public String getBanco() {
		return banco;
	}
	public void setBanco(String banco) {
		this.banco = banco;
	}
}

e teste

public class TestaInsereConta {
	public static void main(String[] args) {
		EntityManagerFactory factory = Persistence.createEntityManagerFactory("controlefinancas");
		EntityManager entityManager = factory.createEntityManager();
		
		Conta conta = new Conta();
		
		conta.setTitular("Jose Roberto");
		conta.setBanco("Banco do Brasil");
		conta.setNumero("12312-5");
		conta.setAgencia("09989");
		
		entityManager.getTransaction().begin();
		entityManager.persist(conta);
		entityManager.getTransaction().commit();
		
		System.out.println("Sua Conta foi gravada com sucesso!!!");
	}
}

E acontece esse erro:

log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version).
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: [PersistenceUnit: controlefinancas] class or package not found
	at org.hibernate.ejb.Ejb3Configuration.addNamedAnnotatedClasses(Ejb3Configuration.java:1316)
	at org.hibernate.ejb.Ejb3Configuration.addClassesToSessionFactory(Ejb3Configuration.java:1094)
	at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:981)
	at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:275)
	at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:359)
	at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:55)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:48)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:32)
	at br.com.caelum.financas.teste.TestaInsereConta.main(TestaInsereConta.java:11)
Caused by: java.lang.ClassNotFoundException: br.com.caelum.financas.modelo.Movimentacao
	at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:247)
	at org.hibernate.util.ReflectHelper.classForName(ReflectHelper.java:170)
	at org.hibernate.ejb.Ejb3Configuration.classForName(Ejb3Configuration.java:1232)
	at org.hibernate.ejb.Ejb3Configuration.addNamedAnnotatedClasses(Ejb3Configuration.java:1304)
	... 8 more


Alguém poderia me dar uma ajuda? Estou começando com hibernate. não tenho idéia de como solucionar o problema.

5 Respostas

ErickRAR

Criou a classe Movimentacao?
Se não criou, retire a declaração dela do persistence.

maior_abandonado

além de conferir se criou, confira se está no pacote br.com.caelum.financas.modelo e se está anotada com @Entity

N

eu apaguei a linha da classe Movimentacao.java na persistencia.xml

Acho que tem esta faltando adicionar algum .jar na lib estou listado o novo erro depois de corrigir segundo instruções de vocês.

log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version).

log4j:WARN Please initialize the log4j system properly.

log4j:WARN See <a href="http://logging.apache.org/log4j/1.2/faq.html#noconfig">http://logging.apache.org/log4j/1.2/faq.html#noconfig</a> for more info.

Exception in thread “main” javax.persistence.PersistenceException: No Persistence provider for EntityManager named controlefinancas

at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54)

at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:32)

at br.com.caelum.financas.teste.TestaInsereConta.main(TestaInsereConta.java:11)

Esse é a lista dos .jar no diretorio lib

antlr-2.7.6.jar
commons-collections-3.1.jar
dom4j-1.6.1.jar
hibernate-jpa-2.0-api-1.0.0.Final.jar
hibernate3.jar
javassist-3.9.0.GA.jar
jta-1.1.jar
log4j-1.2.16.jar
mysql-connector-java-5.1.7-bin.jar
slf4j-api-1.5.8.jar
slf4j-log4j12-1.5.8.jar

N

a tabela não foi criada no banco so o banco fj25.

Hailton_Duarte

Olá, você já deve ter resolvido seu problema, mas para ajudar outros que possam vir aqui:
veja se a folder META-INF esta dentro do diretório src, se não incluao no src.

Criado 18 de julho de 2012
Ultima resposta 2 de out. de 2013
Respostas 5
Participantes 4