在使用HibernateTemplate的时候,我们通常会通过XXX extends HibernateDaoSupport,然后通过super.getHibernateTemplate()来获取HibernateTemplate对象。
然而当通过new XXX().save()时(注:super.getHibernateTemplate()在save()方法中),super.getHibernateTemplate()会返回null。
于是我显式将HibernateTemplate注入到HibernateDaoSupport中去,依然报错。。。
调出原来的项目进行对比,发现原来的项目没有哪个地方显式地注入了HibernateTemplate。
没办法,只有把相关的地方一一对比,然后尽量改得相同。。
试了一下午,终于发现了问题:
XXX对象不能new,应该从容器中取。
至于为什么HibernateTemplate对象没有显示注入就能在HibernateDaoSupport中使用,我猜想是容器干了这件事,但具体怎么做的我还没仔细研究,这点还请大神们不吝赐教。