日期:2014-05-17  浏览次数:20714 次

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是空值,试了很多方法,还是没找到原因,希望大家能帮忙解答一下。
SSH sessionFactory baseDao hibernate4

------解决方案--------------------
看看sessionFactory的全类名

既然用SSH  为什么DAO不继承HibernateDaoSupport
------解决方案--------------------
继承hibernateDaoSUpport 然后自己就不用手动写sessionFactory注入方法了
------解决方案--------------------
继承hibernateDaoSUpport
------解决方案--------------------<