搞了一上午没有结果 来这里请教一下高人 在A类中调用B类中的find查询方法 B类继承了HibernateDaoSupport先贴代码 
applicationContext.xml <bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation"
value="file:src/hibernate.cfg.xml">
</property>
</bean>
<bean id="B" class="com.B">
         <property name="sessionFactory">
                     <ref bean="sessionFactory" />
         </property>
         </bean>
接着就是B.JAVA类
public class B extends HibernateDaoSupport{
public List findList(String hql){
   getHibernateTemplate().find(hql);
}
 
}最后是A.JAVA
public class A{  public void test(){
     B b = new B();
     b.findList("select * form table");
   }
}然后就报NULL  我DEBUG了一下 发现B类中的getHibernateTemplate()本身就是NULL 网上找了一些例子 都是这么写的 可是我的却报NULL 怀疑是由于在A类中new了B导致的 请高手分析一下 到底哪里有问题 
注:spring2.+hibernate3.1 分开管理没有全部交给spring 

解决方案 »

  1.   

    将class B的代码做如下修改试试看
    public class B extends HibernateDaoSupport{
    private SessionFactory sessionFactory;
    private HibernateTemplate hibernateTemplate;
    public void setSessonFactory(SessionFactory sessionFactory) {
    hibernateTemplate = new HibernateTemplate(sessionFactory);
    }
    public List findList(String hql){
      hibernateTemplate .find(hql);
    }
     
    }
      

  2.   

    你的B类不能自己new出来 ,要用spring给你创建的   B b = (B) new ClassPathXmlApplicationContext("applicationContext.xml").getBean("B");    然后就OK了
      

  3.   

    getHibernateTemplate是null,我看深层次原因应该是dataSource没有诸如到HibernateTemplate中。