Olá! Estou iniciando um estudo sobre o hibernate. Usando o relacionamento de N:M como Annotation @ManyToMany Bidirecional e blah, blah… (rsrsrsrsrsrsr )
Estava testando o cadastro de Autor, mas tá dando um erro ao iniciar a conexão, veja o erro:
[color=red]Initial SessionFactory creation failed.java.lang.NullPointerException
Exception in thread “main” java.lang.ExceptionInInitializerError
at Persistencia.HibernateUtil.(HibernateUtil.java:27)
at Teste.TesteInserir.main(TesteInserir.java:20)
Caused by: java.lang.NullPointerException
at org.hibernate.cfg.AnnotationBinder.processElementAnnotations(AnnotationBinder.java:1245)
at org.hibernate.cfg.AnnotationBinder.fillComponent(AnnotationBinder.java:1841)
at org.hibernate.cfg.AnnotationBinder.bindId(AnnotationBinder.java:1878)
at org.hibernate.cfg.AnnotationBinder.processElementAnnotations(AnnotationBinder.java:1281)
at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:754)
at org.hibernate.cfg.AnnotationConfiguration.processArtifactsOfType(AnnotationConfiguration.java:534)
at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:286)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1286)
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:859)
at Persistencia.HibernateUtil.(HibernateUtil.java:23)
… 1 more
Java Result: 1[/color]
Estou testando a persistencia de dados da seguinte forma:
[code] public static void main(String[] args) {
Session sessao = HibernateUtil.getSessionFactory().openSession();
AutorDAO dao = new AutorDAO();
Autor a = new Autor();
a.setCodAutor(1);
a.setNome("Antonio marcos");
sessao.save(a);
}[/code]
No projeto de Teste tenho as seguintes classes para a pesistencia e etc:
Classe GenericHibernateDAO:
[code]/*
- To change this template, choose Tools | Templates
- and open the template in the editor.
*/
package Persistencia;
import java.io.Serializable;
import java.lang.reflect.ParameterizedType;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Criterion;
public abstract class GenericHibernateDAO<T, ID extends Serializable>
implements GenericDAO<T, ID> {
private Class<T> entidadePersistente;
private Session sessao;
public GenericHibernateDAO() {
this.entidadePersistente = (Class<T>) ((ParameterizedType) getClass()
.getGenericSuperclass()).getActualTypeArguments()[0];
}
@SuppressWarnings("unchecked")
public void setSession(Session s) {
this.sessao = s;
}
protected Session getSession() {
if (sessao == null)
sessao = HibernateUtil.getSessionFactory().openSession();
else
if (!sessao.isOpen())
sessao = HibernateUtil.getSessionFactory().openSession();
return sessao;
}
public Class<T> getEntidadePersistente() {
return entidadePersistente;
}
//@SuppressWarnings("unchecked")
@Override
public T findById(ID id) {
T entidade = (T) getSession().load(getEntidadePersistente(), id);
return entidade;
}
@SuppressWarnings("unchecked")
@Override
public List<T> findAll() {
return findByCriteria();
}
@SuppressWarnings("unchecked")
@Override
public T salvar(T entidade) {
Transaction transacao = getSession().beginTransaction();
getSession().save(entidade);
transacao.commit();
getSession().close();
return entidade;
}
@Override
public void remover(T entidade) {
Transaction transacao = getSession().beginTransaction();
getSession().delete(entidade);
transacao.commit();
getSession().close();
}
@Override
public void atualizar(T entidade) {
Transaction transacao = getSession().beginTransaction();
getSession().saveOrUpdate(entidade);
transacao.commit();
getSession().close();
}
public void flush() {
getSession().flush();
}
public void clear() {
getSession().clear();
}
/**
* Use this inside subclasses as a convenience method.
*/
@SuppressWarnings("unchecked")
protected List<T> findByCriteria(Criterion... criterion) {
Criteria crit = getSession().createCriteria(getEntidadePersistente());
for (Criterion c : criterion) {
crit.add(c);
}
return crit.list();
}
}
[/code]
Classe HibernateUtil:
[code]/*
- To change this template, choose Tools | Templates
- and open the template in the editor.
*/
package Persistencia;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.SessionFactory;
public class HibernateUtil {
private static final SessionFactory sessionFactory;
static {
try {
// Create the SessionFactory from standard (hibernate.cfg.xml)
// config file.
sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
} catch (Throwable ex) {
// Log the exception.
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
[/code]
Por que tá dando esse erro?