Erro: java.lang.ExceptionInInitializerError

Olá,

Estou usando Hibernate com Annotations e está dando o seguinte erro ao chamar minha classe DAO.

java.lang.ExceptionInInitializerError: org.hibernate.MappingException
	at br.unesp.sisor.dao.BaseDao.$init$(BaseDao.java:17)
	at br.unesp.sisor.dao.BaseDao.<init>(BaseDao.java:21)
	at br.unesp.sisor.action.gerais.SisorProcessoSalvarAction.execute(SisorProcessoSalvarAction.java:65)
	at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
	at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
	at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:719)
	at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:376)
	at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].server.http.HttpRequestHandler.doProcessRequest(HttpRequestHandler.java:870)
	at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:451)
	at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].server.http.HttpRequestHandler.serveOneRequest(HttpRequestHandler.java:218)
	at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].server.http.HttpRequestHandler.run(HttpRequestHandler.java:119)
	at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].server.http.HttpRequestHandler.run(HttpRequestHandler.java:112)
	at oracle.oc4j.network.ServerSocketReadHandler$SafeRunnable.run(ServerSocketReadHandler.java:260)
	at oracle.oc4j.network.ServerSocketAcceptHandler.procClientSocket(ServerSocketAcceptHandler.java:230)
	at oracle.oc4j.network.ServerSocketAcceptHandler.access$800(ServerSocketAcceptHandler.java:33)
	at oracle.oc4j.network.ServerSocketAcceptHandler$AcceptHandlerHorse.run(ServerSocketAcceptHandler.java:831)
	at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:303)
	at java.lang.Thread.run(Thread.java:595)
Caused by: org.hibernate.MappingException: Unable to find column with logical name: UDESP_NUMUNIDADEDESP in Tsisorreserva
	at org.hibernate.cfg.Ejb3JoinColumn.checkReferencedColumnsType(Ejb3JoinColumn.java:413)
	at org.hibernate.cfg.BinderHelper.createSyntheticPropertyReference(BinderHelper.java:89)
	at org.hibernate.cfg.FkSecondPass.doSecondPass(FkSecondPass.java:63)
	at org.hibernate.cfg.AnnotationConfiguration.processFkSecondPassInOrder(AnnotationConfiguration.java:474)
	at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:295)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1286)
	at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:915)
	at br.unesp.sisor.model.HibernateSessionFactory.<clinit>(HibernateSessionFactory.java:58)
	... 22 more

Na sua classe BaseDao, deve ter um atributo estatico que está sendo inicializado com o retorno de um metodo, e esse metodo está lançando uma exceção, ex.:

public class BaseDao{ private static SessionFactory factory = new Configuration().configure().buildSessionFactory(); //Bang }

Na minha classe Dao eu chamo uma outra classe que cria a session Factory.

 private Session session = HibernateSessionFactory.getSession();
public class HibernateSessionFactory {
    public HibernateSessionFactory() {
    }
    
    private static SessionFactory factory;
    private static AnnotationConfiguration cfg;
    
    static{
        cfg = new AnnotationConfiguration();        
        cfg.addAnnotatedClass(Tsisorprocesso.class);
        factory = cfg.buildSessionFactory();            
    }

    public static Session getSession(){
            return factory.openSession();
    }

Será que preciso fazer mais alguma coisa?

Resolvi o problema.

Eu usei um plug-in para mapear as tabelas em alguns casos ele mapeou o nome das colunas errado.
As colunas que tinham o sinal “_” ele mapeou sem.
Ele fez isto nas classes que tem chave composta.

Obrigada a todos.