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对象。
## 解决方案
在baseDao或者Dao中增加这段代码
```java
@Autowired
public void setSessionFactoryOverride(SessionFactory sessionFactory){
super.setSessionFactory(sessionFactory);
}
```
或者
```java
@Autowired
public void setTemplate(HibernateTemplate hibernateTemplate){
setHibernateTemplate(hibernateTemplate);
}
```
以上两种方案必须保证spring中已经有sessionFactory与hibernateTemplate。