spring 整合hibernate报错'sessionFactory' or 'hibernateTemplate' is required异常

Caused by: java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate' is required at org.springframework.orm.hibernate3.support.HibernateDaoSupport.checkDaoConfig(HibernateDaoSupport.java:118) at org.springframework.dao.support.DaoSupport.afterPropertiesSet(DaoSupport.java:44)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1514)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452)
	... 36 more

 原因:

我的pageDaoImpA继承了org.springframework.orm.hibernate3.support.HibernateDaoSupport, spring在初始化容器的时候会对这个对象作一个check, 可以看看HibernateDaoSupport源码中的checkDaoConfig()方法

 protected final void checkDaoConfig()
 {
   if (this.hibernateTemplate == null)
        throw new IllegalArgumentException("'sessionFactory' or 'hibernateTemplate' is required");
  }

 

我的结构是PageDaoImpA继承 HibernateDaoSupport.因为HibernateDaoSupport里需要用到SessionFactory或hibernateTemplate

<bean id="pageDao" class ="com.lft.daoImp.PageDaoImpA">
      <!-- hibernateDaoSupport需要注入sessionFactory或hibernateTemplate -->
     <property name="hibernateTemplate" ref="hibernateTemplate"> </property>
</bean>

 上面的配置就把SessionFactory注入进去了。

现在我使用的是注解, DaoSupport中需要这样才能成功注入SessionFactory

 

@Transactional//具有默认的事务行为
public abstract class PageDaoImpA extends HibernateDaoSupport implements DAO { 
	/**
  	* 【注入 SessionFactory】
	* 注入一个sessionFactory属性,并注入到父类(HibernateDaoSupport )里
  	*/
  	private SessionFactory sessionFacotry;
	//注入一个bean, 默认(name = "sessionFactory"), 因此只写@Resource
  	@Resource     
  	public void setSessionFacotry(SessionFactory sessionFacotry) {   
        		super.setSessionFactory(sessionFacotry);   
  	}   
   	//省略非重点代码...

}

 以上代码可能有误:

public class BaseDao extends HibernateDaoSupport{
	@Resource(name="sessionFactory")
	public void setSuperSessionFactory(SessionFactory sessionFactory) {
		super.setSessionFactory(sessionFactory);
	}
}

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值