应该与我在添加hibernate能力时取消了创建sessionFactory无关把,
还是和配置文件有关,为什么运行总提示空指针那

解决方案 »

  1.   

    sh中dao里面都要配置sessionFactory关键是看你继承的类
      

  2.   

    类中 extends HibernateDaoSupport ,applicationContext.xml配置如下 <bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="configLocation"
    value="classpath:hibernate.cfg.xml">
    </property>
    </bean>
    <bean id="baseDao" class="com.gdekt.dao.daoimpl.BaseDaoImpl">
    <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>
    请问哪里有什么问题吗?还需要配置什么?
      

  3.   

    配置文件中:
    <bean id="hibernateTemplate" class="hibernateTemplateAPI全路径"> 
    <property name="sessionFactory" ref="sessionFactory"> </property> 
    </bean> <bean id="baseDao" class="com.gdekt.dao.daoimpl.BaseDaoImpl"> 
    <property name="sessionFactory" ref="sessionFactory"> </property> 
    <property name="hibernateTemplate" ref="hibernateTemplate"> </property> 
    </bean> 
    BaseDaoImpl中:
    private HibernateTemplate hibernateTemplate;get,set
      

  4.   

    <bean id="basicDao"
    class="org.springframework.orm.hibernate3.support.HibernateDaoSupport"
    abstract="true">
    <property name="sessionFactory">
    <ref bean="sessionFactory" />
    </property>
    </bean>DAO继承extends HibernateDaoSupport
      

  5.   

    BaseDaoImpl 中的代码
    import org.springframework.orm.hibernate3.support.HibernateDaoSupport;  public class BaseDaoImpl extends HibernateDaoSupport implements IBaseDao{ public Session session;
      public Session getSessionTemplate() {
      if(this.getHibernateTemplate()==null){
      System.out.println("没有this.getHibernateTemplate()");
      }
    SessionFactory sf=this.getHibernateTemplate().getSessionFactory();
    if(sf==null){
    System.out.println("没有sf");
    }
    session=sf.getCurrentSession();
    if(session==null){
    System.out.println("没有session");
    }
    return session;
    }
    }applicationcontent.xml中的代码 <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
    </bean> 为myeclipse里自动生成的 <!-- 声明Hibernate事物,加入session工厂 -->
    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory"><ref bean="sessionFactory" /></property>
    </bean>

    <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"> 
    <property name="sessionFactory" ref="sessionFactory"> </property> 
    </bean>  <!-- dao below -->
    <bean id="baseDao" class="com.gdekt.dao.daoimpl.BaseDaoImpl" >
    <property name="sessionFactory" ref="sessionFactory"></property>
    <property name="hibernateTemplate" ref="hibernateTemplate"></property>
    </bean>hibernate.cfg.xml中的代码与applicationcontent.xml在同一目录下。<hibernate-configuration><session-factory>
    <property name="connection.username">sa</property>
    <property name="connection.url">jdbc:microsoft:sqlserver://192.168.1.12:1433;DatabaseName=ekts_db</property>
    <property name="dialect">org.hibernate.dialect.SQLServerDialect</property>
    <property name="connection.password">07512362598</property>
    <property name="connection.driver_class">com.microsoft.jdbc.sqlserver.SQLServerDriver</property>
    <property name="myeclipse.connection.profile"></property>
    <mapping resource="com/gdekt/mappings/EktMails.hbm.xml" /></session-factory></hibernate-configuration>在BaseDaoImpl main方法中  
       System.out.println(new BaseDaoImpl().getHibernateTemplate());
    System.out.println(new BaseDaoImpl().getSessionFactory().openSession());
    都是空值,按上面各位的方法都试了一下,暂时还是没有效果,现在把代码都贴出来,请各位鉴定一下。谢过了先,都琢磨好几天了,未出结果,是不是我myeclipse添加Spring和hibernate能力时有哪些选项遗漏了吗?
      

  6.   

    BaseDaoImpl 不知道写的是什么意思。本来,我也是刚学这个,但据我在尚学堂的视频里看到的,要想使用 this.getHibernateTemplate()方法来获取Hibernate ,是要继承一个 HibernateDaoSupport的对象。但我同时,也在Spring的参考文档中看到,有另一种方法,要更好,而且我自己也调试过了,确实可行,而且没有侵入性。在要使用HibernateTemplate的对象中,定义一个 private HibernateTemplate,然后,要注入SessionFactory的时候,初始化HIbernateTemplate就可以了。
    即:加一个属性和一个方法private HibernateTemplate hibernateTemplate;public void setSessionFactory(SessionFactory sessionFactory){
        this.hibernateTemplate = new HibernateTemplate(sessionFactory):
    }这样,就可以直接调用HibernateTemplate方法中的 save()等方法了,非常方便,而且没有侵入性。
      

  7.   

    <bean id="baseDao" class="com.gdekt.dao.daoimpl.BaseDaoImpl" > 
    <property name="sessionFactory" ref="sessionFactory"> </property> 
    <property name="hibernateTemplate" ref="hibernateTemplate"> </property> 
    </bean>  
    hibernateTemplate 这个BEAN里面已经存在sessionFactory了,为什么这个地方还写。把这个地方sessionFactory去掉。另外在BaseDaoImpl需要有hibernateTemplate 的SET注入方法,BaseDaoImpl 中也不需要继承HibernateDaoSupport这个类,直接可以掉用hibernateTemplate 
    ,不明白的可以联系我,QQ35458526
      

  8.   

    按楼上的添加了这些
    private HibernateTemplate hibernateTemplate;public void setSessionFactory(SessionFactory sessionFactory){
        this.hibernateTemplate = new HibernateTemplate(sessionFactory):
    }
    但是报错,配置文件的信息我感觉没有错误啊,为什么hibernateTemplate总是空?
      

  9.   

    写错啦
    改成这样
    private HibernateTemplate hibernateTemplate; 
    get,set方法
      

  10.   

    你继承了HibernateDaoSupport 又使用set注入了,只要使用一种去掉继承后者去掉配置文件里的注入的地方
    <bean id="baseDao" class="com.gdekt.dao.daoimpl.BaseDaoImpl" > 
    <property name="sessionFactory" ref="sessionFactory"> </property> 
    <property name="hibernateTemplate" ref="hibernateTemplate"> </property> 
    </bean> 
    看看可以不?
      

  11.   

    <bean id="baseDao" class="com.gdekt.dao.daoimpl.BaseDaoImpl" > 
    <property name="hibernateTemplate" ref="hibernateTemplate"> </property> 
    </bean>  
    BaseDaoImpl 中也不需要继承HibernateDaoSupport这个类,直接可以掉用hibernateTemplate BaseDaoImpl 类中添加以下:
    public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
    this.hibernateTemplate = hibernateTemplate;
    }
    然后直接可以调用 hibernateTemplate.save()什么的,不明白加我QQ35458526.加QQ请注明
      

  12.   

    还有种可能是 spring-hibernate.jar 问题
    发出你的错误信息。
    我遇到也是这样的问题,我用的程序需要 Serializable
    而 spring-hibernate.jar  没有
    所以就不能加载
      

  13.   

    相似的问题,我的是在一个DAO中使用this.getHibernateTemplate()没报错 但在另外一个DAO中却报错了- -!这是什么原因导致的呢?