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里

 

 

你可能感兴趣的:(sessionFactory)