org.hibernate.TransactionException: nested transactions not supported错误的解决方法!

一般这个错误都是因为你的事务没有提交,如下:

public void addUploadFile(UploadedFile uploadedFile) throws Exception{
        Session session=su.getCurrentSession();
        Transaction ts=session.beginTransaction();
        try {
            session.save(uploadedFile);
            
        } catch (Exception e) {
            // TODO: handle exception
            ts.rollback();
            e.printStackTrace();
            throw e;
        }
    }

这样会导致hibernate抛出这个异常。

但是如果你这样:

public void addUploadFile(UploadedFile uploadedFile) throws Exception{
        Session session=su.getCurrentSession();
        Transaction ts=session.beginTransaction();
        try {
            ts.begin();
            session.save(uploadedFile);
            ts.commit();
        } catch (Exception e) {
            // TODO: handle exception
            ts.rollback();
            e.printStackTrace();
            throw e;
        }
    }

这样以来同样会抛该异常。

正确的做法就是:

public void addUploadFile(UploadedFile uploadedFile) throws Exception{
        Session session=su.getCurrentSession();
        Transaction ts=session.beginTransaction();
        try {
            session.save(uploadedFile);
            ts.commit();
        } catch (Exception e) {
            // TODO: handle exception
            ts.rollback();
            e.printStackTrace();
            throw e;
        }
    }

 

 

亲测,mark一下

posted @ 2013-02-19 16:57  小哥哥啊  阅读(15618)  评论(0编辑  收藏  举报