java.lang.IllegalArgumentException: sessionFactory or hibernateTemplate is required

概要:

Spring整合Hibernate后发生异常:

java.lang.IllegalArgumentException: sessionFactory or hibernateTemplate is required

下面是解决方案

| |目录

问题原因

Spring整合Hibernate后通常我们都会让dao继承继承一个类: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");      
  }      
}


所以,继承了HibernateDaoSupport的对象一定要注入一个sessionFactory or hibernateTemplate对象。



解决方案

1.在baseDao或者Dao中增加这段代码

@Autowired
public void setSessionFactoryOverride(SessionFactory sessionFactory){
    super.setSessionFactory(sessionFactory);
}

或者

@Autowired
public void setTemplate(HibernateTemplate hibernateTemplate){
	setHibernateTemplate(hibernateTemplate);
}

以上两种方案必须保证spring中已经有sessionFactory与hibernateTemplate。

评论关闭
评论 还能输入200
评论关闭
评论 还能输入200
资料加载中...
已关注 , 取消