有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java线程和事务:不支持嵌套事务

我有两个线程,A和B,每个线程都将数据插入到两个不同且不相关的表中。 然而,我得到了一个org.hibernate.TransactionException: nested transactions not supported

下面是为线程A执行插入的代码:

    @Override
    public void setA(List<A> a) throws HibernateException {

        if (session == null) {
            session = sessionFactory.openSession();
        }
        Transaction tx = session.beginTransaction();
        try {
            int count = 0;
            for (A row : a) {
                session.save(row);

                if (count++ % 1000 == 0) {
                    session.flush();
                    session.clear();
                }
            }
            tx.commit();
        } catch (Exception e) {
                tx.rollback();
        } finally {
            session.close();
        }
    }

线程B调用的另一个方法与此类似,只是它设置了B而不是As

如何让这两个线程在没有此异常的情况下并发运行


共 (0) 个答案