`

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

    博客分类:
  • SSH
 
阅读更多
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);
	}
}

 

 

 

 

分享到:
评论

相关推荐

    Spring2.5和Hibernate3集成--学习spring aop ioc

    Spring2.5和Hibernate3集成 采用声明式事务 1.声明式事务的配置 * 配置sessionFactory * 配置事务管理器 * 配置事务的传播特性 * 配置哪些类哪些方法使用事务 2.编写业务逻辑方法 * 继承...

    ssh(structs,spring,hibernate)框架中的上传下载

     TfileDAOHibernate通过扩展Spring提供的Hibernate支持类HibernateDaoSupport而建立,HibernateDaoSupport封装了HibernateTemplate,而HibernateTemplate封装了Hibernate所提供几乎所有的的数据操作方法,如execute...

    SpringMVC+Hibernate全注解整合

    &lt;bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"&gt; &lt;property name="sessionFactory" ref="sessionFactory" /&gt; class="org.springframework.orm.hibernate3....

    Spring-Reference_zh_CN(Spring中文参考手册)

    12.2.2. 在Spring的application context中创建 SessionFactory 12.2.3. HibernateTemplate 12.2.4. 不使用回调的基于Spring的DAO实现 12.2.5. 基于Hibernate3的原生API实现DAO 12.2.6. 编程式的事务划分 12.2.7. ...

    Spring 2.0 开发参考手册

    12.2.2. 在Spring的application context中创建 SessionFactory 12.2.3. HibernateTemplate 12.2.4. 不使用回调的基于Spring的DAO实现 12.2.5. 基于Hibernate3的原生API实现DAO 12.2.6. 编程式的事务划分 12.2.7...

    spring chm文档

    Spring Framework 开发参考手册 Rod Johnson Juergen Hoeller Alef Arendsen Colin Sampaleanu Rob Harrop Thomas Risberg Darren Davison Dmitriy Kopylenko Mark Pollack Thierry Templier Erwin ...

    Spring中文帮助文档

    12.2.2. 在Spring容器中创建 SessionFactory 12.2.3. The HibernateTemplate 12.2.4. 不使用回调的基于Spring的DAO实现 12.2.5. 基于Hibernate3的原生API实现DAO 12.2.6. 编程式的事务划分 12.2.7. 声明式的...

    Spring API

    12.2.2. 在Spring容器中创建 SessionFactory 12.2.3. The HibernateTemplate 12.2.4. 不使用回调的基于Spring的DAO实现 12.2.5. 基于Hibernate3的原生API实现DAO 12.2.6. 编程式的事务划分 12.2.7. 声明式的...

    SPRING API 2.0.CHM

    Required RequiredAnnotationBeanPostProcessor Resource ResourceAllocationException ResourceArrayPropertyEditor ResourceBundleEditor ResourceBundleMessageSource ResourceBundleThemeSource ...

    SpringMVC-SSH全注解

    &lt;bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"&gt; &lt;property name="sessionFactory" ref="sessionFactory" /&gt; class="org.springframework.orm.hibernate3....

Global site tag (gtag.js) - Google Analytics