[RESOLVIDO] HIBERNATE - sessionFactory não inicializada
13 respostas
J
jlsilva
Boa noite a todos,
estou com um problema quando tento persistir um objeto no banco de dados...
pelo que estou vendo meu session não está sendo preenchido com a sessionFactory(está retornando nulo) ,
por favor... Alguem pode me ajudar???
seguem as Classes...
packagebr.com.locadora.persistence;importorg.hibernate.cfg.AnnotationConfiguration;importorg.hibernate.SessionFactory;publicclassHibernateUtil{privatestaticfinalSessionFactorysessionFactory;static{try{sessionFactory=newAnnotationConfiguration().configure("br/com/locadora/config/mysql_hibernate.cfg.xml").buildSessionFactory();}catch(Throwableex){System.err.println("Initial SessionFactory creation failed."+ex);thrownewExceptionInInitializerError(ex);// ele está caindo no catch (não está preenchendo o sessionFactory)}}publicstaticSessionFactorygetSessionFactory(){returnsessionFactory;//esta retornando nullo }}
publicclassCadastro{publicstaticvoidmain(String[]args){Cadastroc=newCadastro();c.cadastraCategorias();}publicvoidcadastraCategorias(){try{Stringcategorias[]={"acao","aventura","terror"};Categoriacategoria=null;GenericDaoHibernate<Categoria,Integer>cd=newCategoriaDao();for(inti=0;i<3;i++){categoria=newCategoria();categoria.setDescricao(categorias[i]);cd.save(categoria);//chamo o metodo save de GenericDaoHibernate instanciando sua subclasse Categoria...System.out.println("Categoria Salva");}}catch(Exceptione){System.out.println("erro"+e.getMessage());e.printStackTrace();}}}
Vocênaodeclarouantesasessaoetransaction@Overridepublicvoidsave(Eentity)throwsException{Sessionsessao=null;Transactiontransaction=null;try{sessao=HibernateUtil.getSessionFactory().openSession();transaction=session.beginTransaction();sessao.save(entity);transaction.commit();}catch(HibernateExceptionex){sysout("Nao foi possível inserir + "ex.getMessage());}finally{try{sessao.close();}catch(Throwablee){sysout("Erro ao fechar"+e.getMessage());}}
F
Fexx
Verifica se o cfg está realmente no local indicado ou verifica se o seu xml está correto, se estiver usando o netbeans você pode fazer isso clicando com o botão direito do mouse dentro do xml, depois clica em verificar xml, ou validar xml.
Abraços.
Fica com DEUS.
J
jlsilva
Então Jardel.ads, declarei o session e o transaction sim.. Só que em uma classe abstrata.
Caro Fexx, ele esta encontrando o arquivo xml, não está apontando erro de diretório não, enquanto o próprio, eu creio que esta correto.. Mas vou posta-lo para melhor entendimento ..
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><hibernate-configuration><session-factory><propertyname="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property><propertyname="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property><propertyname="hibernate.connection.url">jdbc:mysql://localhost:3306/projeto_locadora</property><propertyname="hibernate.connection.username">root</property><propertyname="hibernate.connection.password">coti</property><propertyname="hibernate.format_sql">true</property><propertyname="hibernate.show_sql">true</property><mappingclass="br.com.locadora.entity.Categoria"/><mappingclass="br.com.locadora.entity.Cliente"/><mappingclass="br.com.locadora.entity.Endereco"/><mappingclass="br.com.locadora.entity.Filme"/><mappingclass="br.com.locadora.entity.Locacao"/><mappingclass="br.com.locadora.entity.Midia"/></session-factory></hibernate-configuration>
Se o jar do log4j estiver em seu classpath, verifica se a importação de alguma entidade está diferente disso:
import javax.persistence.Entity;
J
jlsilva
Sim meu amigo, as importações nas entidades estão tudo javax.persistence.*, tanto que gerei as tabelas pelo própio Hibernate, com as annotations… enfim…
F
Fexx
Cara se não for o jar, essa mensagem normalmente aparece porque não tem o log4j.properties
J
jlsilva
Então , meu jar está legal para utilizar o Hibernate 3.5, agora, realmente não tenho esse arquivo log4j.properties mesmo não…
F
Fexx
Normalmente esse WARN senão for o jar é o arquivos log4j.properties.
J
jlsilva
Aquele problema de não estar reconhecendo o log4j.properties , já está safo,
mas to dando uma pesquisada e to descobrindo que o problema é com as libs mesmo…
nitial SessionFactory creation failed.java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(Z)V
Exception in thread "main" java.lang.ExceptionInInitializerError
at br.com.locadora.persistence.HibernateUtil.<clinit>(HibernateUtil.java:19)
at br.com.locadora.persistence.Teste.main(Teste.java:10)
Caused by: java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(Z)V
at net.sf.cglib.core.DebuggingClassWriter.<init>(DebuggingClassWriter.java:47)
vou ver o que faço…
F
Fexx
jlsilva:
Aquele problema de não estar reconhecendo o log4j.properties , já está safo,
mas to dando uma pesquisada e to descobrindo que o problema é com as libs mesmo…
nitial SessionFactory creation failed.java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(Z)V
Exception in thread "main" java.lang.ExceptionInInitializerError
at br.com.locadora.persistence.HibernateUtil.<clinit>(HibernateUtil.java:19)
at br.com.locadora.persistence.Teste.main(Teste.java:10)
Caused by: java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(Z)V
at net.sf.cglib.core.DebuggingClassWriter.<init>(DebuggingClassWriter.java:47)
vou ver o que faço…
Ok cara, boa sorte.
Abraços.
Fica com DEUS.
J
JARDEL_RODRIGUES
jlsilva
se já resolveu o problema, edita teu tópico e coloca como [RESOLVIDO]
J
jlsilva
Amigos, acabei de resolver… O problema era com 1 lib… Apenas uma libzinha… rs . Abraços.