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里

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值