初学ssh配置,出错了,一直找不出原因
错误是:继承HibernateDaoSupport的UsersImpl获取到的getHibernateTemplate()一直没有值
这是applicationContext的配置<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="oracle.jdbc.driver.OracleDriver"></property>
<property name="jdbcUrl" value="jdbc:oracle:thin:@localhost:1521:orcl"></property>
<property name="user" value="ssh"></property>
<property name="password" value="ccb"></property>
<property name="minPoolSize" value="1"></property>
<property name="maxPoolSize" value="20"></property>
<property name="initialPoolSize" value="1"></property>
<property name="maxIdleTime" value="20"></property>
</bean>
<!-- Hibernate的SessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource"/>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>test1/po/Users.hbm.xml</value>
</list>
</property>
</bean>
<bean id="userDao" class="test1.impl.UsersImpl">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
<bean id="mgr" class="test1.impl.UsersManagerImpl">
<property name="userDao">
<ref bean="userDao"/>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory"/>
</property>
</bean>
<bean id="transactionInterceptor" alt="初学ssh配备,出错了,一直找不出原因" />
这是导入的jar包

这是UsersImpl部分内容
package test1.impl;
import java.util.List;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import test1.dao.UsersDao;
import test1.po.Users;
public class UsersImpl extends HibernateDaoSupport implements UsersDao {
......
public List<Users> findAll() {
if(getHibernateTemplate()!=null){
List<Users> lu=getHibernateTemplate().find("from Users");
return lu;
}else{
System.out.println("---null---");
}
return null;
}
......
}
在LoginAction里直接测试,execute里部分代码如下:
UsersDao uu=new UsersImpl();
List<Users> lu=uu.findAll();
if(lu!=null&&lu.size()>0){
for (Users users : lu) {
System.out.println(users.toString());
}
}else{
System.out.println("空值");
}
return SUCCESS;
运行后出现结果为:
发现好像是spring没给UsersImpl里的sessionFactory注入值,导致hibernateTemplate也是null
到底是哪里出错了呢?
[解决办法]
hibernate和spring结合的时候,可以直接用hibernateTemplate,也是由spring进行注入,加上代码试试:
<bean id="hibernateTemplate"
class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
[解决办法]
楼主用这种方式能获取的到就ok了
[解决办法]
你这异常信息不是正规的。