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…
package br.com.locadora.persistence;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.SessionFactory;
public class HibernateUtil {
private static final SessionFactory sessionFactory;
static {
try {
sessionFactory = new AnnotationConfiguration().configure("br/com/locadora/config/mysql_hibernate.cfg.xml").buildSessionFactory();
} catch (Throwable ex) {
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex); // ele está caindo no catch (não está preenchendo o sessionFactory)
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory; //esta retornando nullo
}
}
@Override
public void save(E entity) throws Exception {
session = HibernateUtil.getSessionFactory().openSession(); // não estou conseguindo abrir a sessao... (sessionFactory nulo)
transaction = session.beginTransaction();
session.save(entity);
transaction.commit();
session.close();
}
[code]public class Cadastro {
public static void main(String[] args) {
Cadastro c = new Cadastro();
c.cadastraCategorias();
}
public void cadastraCategorias(){
try {
String categorias[] = {"acao","aventura","terror"};
Categoria categoria = null;
GenericDaoHibernate<Categoria, Integer> cd = new CategoriaDao();
for(int i = 0; i<3;i++){
categoria = new Categoria();
categoria.setDescricao(categorias[i]);
cd.save(categoria); //chamo o metodo save de GenericDaoHibernate instanciando sua subclasse Categoria...
System.out.println("Categoria Salva");
}
} catch (Exception e) {
System.out.println("erro" + e.getMessage());
e.printStackTrace();
}
}
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.
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 …
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version).
log4j:WARN Please initialize the log4j system properly.
Initial 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.GenericDaoHibernate.save(GenericDaoHibernate.java:28)
at br.com.locadora.persistence.Cadastro.cadastraCategorias(Cadastro.java:29)
at br.com.locadora.persistence.Cadastro.main(Cadastro.java:11)
Caused by: java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(Z)V
at net.sf.cglib.core.DebuggingClassWriter.<init>(DebuggingClassWriter.java:47)
at net.sf.cglib.core.DefaultGeneratorStrategy.getClassWriter(DefaultGeneratorStrategy.java:30)
at net.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:24)
at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:216)
at net.sf.cglib.core.KeyFactory$Generator.create(KeyFactory.java:145)
at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:117)
at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:108)
at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:104)
at net.sf.cglib.proxy.Enhancer.<clinit>(Enhancer.java:69)
at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.getProxyFactory(CGLIBLazyInitializer.java:107)
at org.hibernate.proxy.pojo.cglib.CGLIBProxyFactory.postInstantiate(CGLIBProxyFactory.java:43)
at org.hibernate.tuple.entity.PojoEntityTuplizer.buildProxyFactory(PojoEntityTuplizer.java:162)
at org.hibernate.tuple.entity.AbstractEntityTuplizer.<init>(AbstractEntityTuplizer.java:135)
at org.hibernate.tuple.entity.PojoEntityTuplizer.<init>(PojoEntityTuplizer.java:55)
at org.hibernate.tuple.entity.EntityEntityModeToTuplizerMapping.<init>(EntityEntityModeToTuplizerMapping.java:56)
at org.hibernate.tuple.entity.EntityMetamodel.<init>(EntityMetamodel.java:269)
at org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:425)
at org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:109)
at org.hibernate.persister.PersisterFactory.createClassPersister(PersisterFactory.java:55)
at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:226)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1291)
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:915)
at br.com.locadora.persistence.HibernateUtil.<clinit>(HibernateUtil.java:15)
... 3 more
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…
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)
[quote=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)