当spring和hibernate整合时,你的dao类继承了HibernateDaoSupport类并且你只使用了xml进行配置进行注入sessionFactory时可能会遇到Bean property ‘sessionFactory’ is not writable or…..错误。
错误大概意思是说你的到类sessionfactory缺少setter方法因此无法在你的dao类中自动注入sessionFactory。但当你尝试在自己的dao类中写入setter方法时会发现父类中的setter方法是final的,无法复写。
解决方法的话目前我只知道在自己的dao类自定义一个方法来获得sessionFactory并同时使用注解来自动注入sessionFactory。
步骤:
1.在xml中开启扫描注解自动注入。
<context:annotation-config />
2.修改自己的dao类,一是自定义一个获得sessionFactory的方法二是在方法上加上@Resource注解
@Resource(name = "sessionFactory")
public void setSuperHibernateTemplate(SessionFactory sessionFactory){
super.setSessionFactory(sessionFactory);
}
3.删掉自己在spring 的xml中自己dao bean中的sessionFactory的配置注入,使自动的注解注入生效。
dao继承HibernateDaoSupport用法越来越少了,因为继承并没有解耦,目前的使用HQL的越来越多。