SSH中BaseDao取不到sessionFactory问题,在线等
本帖最后由 hcjlovejay 于 2013-11-04 08:27:09 编辑
小弟有一个问题,求各位大神帮忙。
问题如下:
我要用到多数据源,所以配置了2个sessionFactory:sql_sessionFactory和mySql_sessionFactory,在单个Dao中,比如,UserDaoImpl中可以取得sessionFactory
application.xml中sessionFactory的注入:
<bean id="userDao" class="com.nbyy.gzcxpt.dao.impl.UserDaoImpl">
<property name="sessionFactory" ref="sql_sessionFactory"/>
</bean>
<bean id="userService" class="com.nbyy.gzcxpt.service.impl.UserServiceImpl">
<property name="userDao" ref="userDao"/>
</bean>
<bean id="userAction" class="com.nbyy.gzcxpt.action.UserAction" scope="prototype">
<property name="userService" ref="userService"/>
</bean>
UserDaoImpl.java中的部分代码:
private SessionFactory sessionFactory;
public SessionFactory getSessionFactory() {
return sessionFactory;
}
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
public Session getSession() {
return sessionFactory.getCurrentSession();
}
此时,sessionFactory是可以取到的,而且也可以进行正常的增删改查。
以下是我将SessionFactory注入到BaseDao
application.xml中sessionFactory的注入:
<!-- 装配通用数据库访问类BaseDAOImpl -->
<bean id="baseDao" class="com.nbyy.gzcxpt.dao.platform.impl.BaseDaoImpl">
<property name="sessionFactory" ref="sql_sessionFactory" />
</bean>
<bean id="baseService" class="com.nbyy.gzcxpt.service.platform.impl.BaseServiceImpl" scope="singleton">
<property name="baseDao" ref="baseDao" />
</bean>
登录DAO
<bean id="loginDao" class="com.nbyy.gzcxpt.dao.platform.login.impl.LoginDaoImpl"
parent="baseDao">
</bean>
<bean id="loginService"
class="com.nbyy.gzcxpt.service.platform.login.impl.LoginServiceImpl"
parent="baseService">
</bean>
<bean id="loginAction" class="com.nbyy.gzcxpt.action.login.LoginAction"
parent="baseAction">
</bean>
通过一步一步调试下来,发现BaseDao中的sessionFactory是空值,试了很多方法,还是没找到原因,希望大家能帮忙解答一下。
------解决方案--------------------看看sessionFactory的全类名
既然用SSH 为什么DAO不继承HibernateDaoSupport
------解决方案--------------------继承hibernateDaoSUpport 然后自己就不用手动写sessionFactory注入方法了
------解决方案--------------------继承hibernateDaoSUpport
------解决方案--------------------<