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.
Javax.persistence.PersistenceException erro
5 Respostas
Criou a classe Movimentacao?
Se não criou, retire a declaração dela do persistence.
além de conferir se criou, confira se está no pacote br.com.caelum.financas.modelo e se está anotada com @Entity
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
a tabela não foi criada no banco so o banco fj25.
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.