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一下

原文地址:https://www.cnblogs.com/auto714/p/2917359.html