ERRO com Hibernate [RESOLVIDO]

7 respostas
S

Pesooal, estou iniciando no Hibernate. E seguindo um artigo da Java Magazine criei uma aplicação desktop. está ocorrendo o seguinte erro quando mando compilar:

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

log4j:WARN Please initialize the log4j system properly.

Exception in thread main javax.persistence.PersistenceException: [PersistenceUnit: cobrancas] class or package not found

at org.hibernate.ejb.Ejb3Configuration.addNamedAnnotatedClasses(Ejb3Configuration.java:1093)

at org.hibernate.ejb.Ejb3Configuration.addClassesToSessionFactory(Ejb3Configuration.java:871)

at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:758)

at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:191)

at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:253)

at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:125)

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

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

at jm.cobrancas.dao.CobrancaDAO.(CobrancaDAO.java:13)

at jm.cobrancas.entity.Cobranca.salvar(Cobranca.java:78)

at Principal.main(Principal.java:17)

Caused by: java.lang.ClassNotFoundException: jm.cobrancas.entity.Cobrancas

at java.net.URLClassLoader$1.run(Unknown Source)

at java.security.AccessController.doPrivileged(Native Method)

at java.net.URLClassLoader.findClass(Unknown Source)

at java.lang.ClassLoader.loadClass(Unknown Source)

at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)

at java.lang.ClassLoader.loadClass(Unknown Source)

at java.lang.ClassLoader.loadClassInternal(Unknown Source)

at java.lang.Class.forName0(Native Method)

at java.lang.Class.forName(Unknown Source)

at org.hibernate.util.ReflectHelper.classForName(ReflectHelper.java:135)

at org.hibernate.ejb.Ejb3Configuration.classForName(Ejb3Configuration.java:1009)

at org.hibernate.ejb.Ejb3Configuration.addNamedAnnotatedClasses(Ejb3Configuration.java:1081)

 10 more

Segue neste link o .rar com todo o codigo do projeto: http://www.4shared.com/file/147205550/83d9e3b0/JM-Cobranas.html

7 Respostas

S

Seria de grande ajuda se alguem pudesse me indicar algum material sobre o hibernate. Não consegui acessar o site http://www.hibernate.org e as informações que possuo estão fragmentadas.
vlw pela atenção

F

Olá Sun.Freitas,

Você verificou este erro: Caused by: java.lang.ClassNotFoundException: jm.cobrancas.entity.Cobrancas ?
Parece que o hibernate não está encontrando sua classe. Verifique se o pacote este digitado corretamente e após isso, verifique se as suas classes compiladas estão no seu classpath.

Abraços.

A

Vá no persistence unit e adicione todas as classes do seu projeto, por vezes o hibernate/JPA não as enxerga então é necessário defini-las claramente no persistence unit. Exemplo:
code:

<?xml version="1.0" encoding="UTF-8"?> org.hibernate.ejb.HibernatePersistence ccaer.fatd ccaer.fobs ccaer.punicao intraer.afa.model.Alunos intraer.afa.model.Atualizacao intraer.afa.model.Cadastro intraer.afa.model.CartaoIdentificacao intraer.afa.model.DadosComplementaresAluno intraer.afa.model.DadosComplementaresEfetivo intraer.afa.model.Emergencia intraer.afa.model.Endereco intraer.afa.model.Foto intraer.afa.model.Nacionalidade intraer.afa.model.Parente intraer.afa.model.Turma intraer.afa.model.TurmaAula intraer.afa.model.Veiculo true
S

Os erros continuam mesmo depois das modificações no persistence.xml

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

log4j:WARN Please initialize the log4j system properly.

Exception in thread main javax.persistence.PersistenceException: [PersistenceUnit: cobrancas] class or package not found

at org.hibernate.ejb.Ejb3Configuration.addNamedAnnotatedClasses(Ejb3Configuration.java:1093)

at org.hibernate.ejb.Ejb3Configuration.addClassesToSessionFactory(Ejb3Configuration.java:871)

at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:758)

at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:191)

at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:253)

at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:125)

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

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

at jm.cobrancas.dao.CobrancaDAO.(CobrancaDAO.java:13)

at jm.cobrancas.entity.Cobranca.salvar(Cobranca.java:78)

at Principal.main(Principal.java:17)

Caused by: java.lang.ClassNotFoundException: Principal.java

at java.net.URLClassLoader$1.run(Unknown Source)

at java.security.AccessController.doPrivileged(Native Method)

at java.net.URLClassLoader.findClass(Unknown Source)

at java.lang.ClassLoader.loadClass(Unknown Source)

at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)

at java.lang.ClassLoader.loadClass(Unknown Source)

at java.lang.ClassLoader.loadClassInternal(Unknown Source)

at java.lang.Class.forName0(Native Method)

at java.lang.Class.forName(Unknown Source)

at org.hibernate.util.ReflectHelper.classForName(ReflectHelper.java:135)

at org.hibernate.ejb.Ejb3Configuration.classForName(Ejb3Configuration.java:1009)

at org.hibernate.ejb.Ejb3Configuration.addNamedAnnotatedClasses(Ejb3Configuration.java:1081)

 10 more

Ainda não entendi o erro com o "log4j.jar"
E aqui segue o Códogo persistence.xml com as modificações.

org.hibernate.ejb.HibernatePersistence
[b]<class>jm.cobrancas.entity.Cobranca</class>
	<class>jm.cobrancas.dao.CobrancaDAO</class>
	<class>Principal.java</class>
	
	<exclude-unlisted-classes>true</exclude-unlisted-classes>[/b]
	  
	<properties>
		<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />
		
		<property name="hibernate.connection.username" value="root" />
		
		<property name="hibernate.connection.password" value="fr31t45" />
		
		<property name="hibernate.connection.url" value="jdbc:mysql://127.0.0.1:3306/bdcobrancas" />
		
		<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
		
		<property name="hibernate.show_sql" value="true" />
	</properties>
</persistence-unit>
R

No seu arquivo persistence.xml, vc colocou uma entidade chamada Principal.java.
Isso provavelmente está errado. Vc deve passar nesse arquivo apenas as classes anotadas com @Entity.

G

Isso é um warning indicando que você não tem um log4j.properties no seu classes indicando as suas definições de logging.

log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version).
log4j:WARN Please initialize the log4j system properly.

S

Pessoal, consegui resolver aqui o problema.

estava faltando o arquivo: commons-collections.jar do Hibernate-entity-manager.

Agradeço a todos pela atenção e colaboração.

Criado 6 de novembro de 2009
Ultima resposta 7 de nov. de 2009
Respostas 7
Participantes 5