hibernate spring 整合 Annotation SessionFactory java.lang.NoSuchMethodError

使用Annotation整合Spring2.5和Hibernate3.3,在使用HibernateDaoSupport的时候我希望采用Annotation的方式,但是setSessionFactory被标记为final,那继承HibernateDaoSupport后就不能重写setSessionFactory方法来实现使用Annotation的注入, 解决方法如下:

@Resource(name="sessionFactory")

    public void setBaseDaoSessionFactory(SessionFactory sessionFactory) {

        super.setSessionFactory(sessionFactory);

    }

如果采用hibernate4的话, 会遇到java.lang.NoSuchMethodError

主要原因就是hibernate4已经提供了很好的机制,所以不需要再继承HibernateDaoSupport类了。那怎么办呢?不就是为了获取到Session么,我们直接在UserDAOImpl.java类中添加一个SessionFactory属性,再添上它的setter方法。

    @Autowired
    private SessionFactory sessionFactory;

    public void setSessionFactory(SessionFactory sessionFactory) {
        this.sessionFactory = sessionFactory;
    }

	protected Session getSession(){
	    return sessionFactory.openSession();
	}

注意这里不要用getCurrentSession(),不然还是有异常。直接用openSession()   //这样好像又不对,hibernate 4.1中又必须调用
getCurrentSession, 不然不在一个session里

猜你喜欢

转载自renxiangzyq.iteye.com/blog/2195687