我是新手,这两天在试的时候老是报 Exception in thread "main" java.lang.NullPointerException
at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:168)
at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2901)
at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2897)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1908)
at com.tel.connora.Base.main(Base.java:18)代码如下:
public class Base {
private static SessionFactory sf; public static void main(String args[]) {
Offer offer = new Offer();
offer.setId(1);
offer.setName("name");
sf = new Configuration().configure().buildSessionFactory();
Session s = sf.openSession();
s.beginTransaction();
s.save(offer);
s.getTransaction().commit();
s.close();
}}
感觉配置也没啥问题。。请大虾指导下,多谢了

解决方案 »

  1.   

    应该是sf为Null把?试一下用这个
    sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
    并检查下hibernate.cfg.xml有没有放在src目录下面?
      

  2.   

    sf = new Configuration().configure().buildSessionFactory();
    这个是18行
      

  3.   

    放在这个目录下了,改成AnnotationConfiguration也不行
      

  4.   

    这个错报在解析hibernate配置文件的地方了,八成是hibernate.cfg.xml写的有问题。可以贴出来大家看一下
      

  5.   

    这个是配置文件
    <hibernate-configuration>
    <session-factory>
    <property name="show_sql">true</property>
    <property name="myeclipse.connection.profile">oracle</property>
    <property name="connection.url">jdbc:oracle:thin:@*:*</property>
    <property name="connection.username">*</property>
    <property name="connection.password">*</property>
    <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
    <property name="dialect">org.hibernate.dialect.OracleDialect</property> <mapping resource="cn/itcast/hibernate/domain/Userr.hbm.xml" />
    <class-cache class="cn.itcast.hibernate.domain.Userr" usage="read-write" />
    </session-factory>
    </hibernate-configuration>
      

  6.   

    你的offer这个类,看你没有在hibernate配置文件里面映射。<mapping resource="cn/itcast/hibernate/domain/Userr.hbm.xml" />
      

  7.   

    sf = new Configuration().configure("D:/workspace/xxx/hibernate.cfg.xml").buildSessionFactory();写上hibernate.cfg.xml的全路径试下
      

  8.   

    看了下LZ的配置,你这里用的xml配置方法而不是Annotation注入,楼上部分大神说用什么sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory
    简直是找抽,
    解决这个问题最好的办法是先调试,看下你main方法中是哪段代码哪句代码出了问题,有可能是你的SessionFactory都没能获取到,然后你就openSession哪能不NullPointException呢?
      

  9.   

    sf = new Configuration().configure().buildSessionFactory();
    sf为空,hibernate配置出错,看看配置路径
      

  10.   

    没读到hibernate的配置文件,网上多找几个试试
      

  11.   

    sf = new Configuration().configure().buildSessionFactory();很明显是org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:168)的你的configuration 没取到sessionFactory hibernate.cfg.xml 是在src包下么? 文件名确认是跟hibernate.cfg.xml 
    一样么、
      

  12.   

    同意楼上各位大神们的说法。应该就是hibernate.cfg.xml的问题,有可能是路径放错了,还有可能是配置错了
    sf都没创建成功。