我在做ssh项目中,用了spring的getHibernateTemplate().find()方法,返回一个List,但是总提示我是null,这是为什么呢,怎么解决
这是我的配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"><beans>
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://127.0.0.1:3306/renwenzhi</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>wti</value>
</property>
</bean>

<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>com/po/Student.hbm.xml</value>
</list>
</property>
</bean>

<bean id="userdao" class="com.dao.Dao">

<property name="sessionFactory">

<ref local="sessionFactory"/>

</property>

</bean>

<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">  
        <property name="sessionFactory">  
          <ref bean="sessionFactory"/>  
    </property>
    <property name="allowCreate"> 
         <value>true</value> 
       </property>  
</bean> 

</beans>

解决方案 »

  1.   

    先确定getHibernateTemplate()错误,还是getHibernateTemplate().find(...)报错,再进一步分析
    调用DAO的时候,不能通过NEW 调用,也就是不能类似这样TAdminDAO admindao = new TAdminDAO();
    而需要调用配置文件。类似下面这样
    private ApplicationContext ctx = new FileSystemXmlApplicationContext(
    "../webapps/helloworld/WEB-INF/classes/applicationContext.xml");
    TAdminDAO admindao = (TAdminDAO) ctx.getBean("TAdminDAO");
    或者:
    private ApplicationContext ctx = null;
    if(ctx == null){
        ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(ServletActionContext.getServletContext());
    }
    ctx.getBean(beanName); 你可以看下这篇帖子
    http://www.javaeye.com/topic/15057
      

  2.   

    我以前碰到过这种问题,要看spring用的是哪一个版本的,不同版本的datesource的bean配置不一样
    或者你可以写一个测试程序测试一下:ApplicationContext cx=new FileSystemXmlApplicationContext("applicationContext.xml的路径");
    userDAO userdao=(AdminDAO)cx.getBean("userdao");