%%%% Error Creating SessionFactory %%%% Hibernate出错

log4j:WARN No such property [username] in service.DbAppender.
2012-03-16 10:30:28:062[INFO]: bean.UserBean@1b64e6a
2012-03-16 10:30:28:109[INFO]: Hibernate 3.3.2.GA
%%%% Error Creating SessionFactory %%%%
java.lang.NullPointerException
    at service.HibernateSessionFactory.rebuildSessionFactory(HibernateSessionFactory.java:70)
    at service.HibernateSessionFactory.getSession(HibernateSessionFactory.java:54)
    at service.impl.UserBeanServiceImpl.insertUserMessage(UserBeanServiceImpl.java:18)
    at dao.GetObject.excuteSql(GetObject.java:52)
    at service.DbAppender.getLogStatement(DbAppender.java:42)
    at org.apache.log4j.jdbc.JDBCAppender.flushBuffer(JDBCAppender.java:249)
    at org.apache.log4j.jdbc.JDBCAppender.append(JDBCAppender.java:146)
    at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:230)
    at org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:65)
    at org.apache.log4j.Category.callAppenders(Category.java:203)
    at org.apache.log4j.Category.forcedLog(Category.java:388)
    at org.apache.log4j.Category.log(Category.java:853)
    at org.slf4j.impl.Log4jLoggerAdapter.info(Log4jLoggerAdapter.java:300)
    at org.hibernate.cfg.Environment.<clinit>(Environment.java:560)
    at org.hibernate.cfg.Configuration.reset(Configuration.java:217)
    at org.hibernate.cfg.Configuration.<init>(Configuration.java:197)
    at org.hibernate.cfg.Configuration.<init>(Configuration.java:201)
    at service.HibernateSessionFactory.<clinit>(HibernateSessionFactory.java:25)
    at service.impl.UserBeanServiceImpl.insertUserMessage(UserBeanServiceImpl.java:18)
    at dao.GetObject.excuteSql(GetObject.java:52)
    at service.DbAppender.getLogStatement(DbAppender.java:42)
    at org.apache.log4j.jdbc.JDBCAppender.flushBuffer(JDBCAppender.java:249)
    at org.apache.log4j.jdbc.JDBCAppender.append(JDBCAppender.java:146)
    at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:230)
    at org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:65)
    at org.apache.log4j.Category.callAppenders(Category.java:203)
    at org.apache.log4j.Category.forcedLog(Category.java:388)
    at org.apache.log4j.Category.info(Category.java:663)
    at dao.GetObject.getMethod(GetObject.java:25)
    at dao.GetObject.insertUserInfo(GetObject.java:35)
    at test.Test.testUser(Test.java:33)
    at test.Test.main(Test.java:22)

没被执行到是因为类的初始化只会执行一次
可以看看类的初始化顺序就明白了

这里要吗使用两个不同的日志系统,hibernate操作的日志系统不进行数据库的操作

要吗就是在日志系统里使用其他数据库连接的获取等

把这个代码贴出来看看

service.HibernateSessionFactory

at service.HibernateSessionFactory.rebuildSessionFactory(HibernateSessionFactory.java:70)  

是什么内容

.......这个错误就怪了,你的hibernate包是不是冲突,混乱 了

明白你错误在哪 了

at dao.GetObject.excuteSql(GetObject.java:52)

at service.DbAppender.getLogStatement(DbAppender.java:42)

你是不是自己重写了日志系统

因为你重写了日志系统
在日志系统里又调用session去操作数据库,
因为hibernate使用的是哪你一套的日志系统,hibernate在创建sesion时又去调用 你的日志系统,

而像类的初始化对于JVM只执行一次的


private static Configuration configuration = new Configuration();

这些是没有被执行到的

因为configuration()里面使用了log

只是因为你的rebuildsessionfactory没有添加这个

configuration = new Configuration();

一旦添加,你这个代码就是相当于跳进了死循环了,

再有就是做一个判断,如果sessionfactory没有初始化完成 ,就不进行数据库日志的记录