zoukankan      html  css  js  c++  java
  • transaction already active

    这个问题是使用spring 事务管理时经常出现的错误,最开始时相当令我头疼,也不知道是哪里出现的问题。在网上找了一阵后,依然无解。意思就是说上一个事务处于激活状态中,不能开始新的数据库更新操作。

    //slavesDao.delete(vsi) ;
        slavesDao.update(vsi) ;
        txn.commit();
    

    如果只是执行完了第一行语句,然后根本就没有执行到txn.commit();这一步,那么要开始下一个事务就会出这样的错,所以我们一般应该检查自己的逻辑是否正确!

    又出错,,,,

    Session session = this.sessionFactory.getCurrentSession();
            session.saveOrUpdate(piano);
    

    使用getCurrentSession()的情况下不需要commit
    您调用SessionFactory时。getCurrentSession,如果不存在,它会创建一个新会话,否则使用当前休眠上下文中的相同会话。当事务结束时,它会自动刷新并关闭会话,因此您不需要在外部执行。
    如果您在单线程环境中使用休眠,您可以使用getCurrentSession,因为与每次创建新会话相比,它的性能更快。
    您需要向hibernate.cfg.xml添加以下属性才能使用getCurrentSession方法

  • 相关阅读:
    vue框架组件id获取
    Proxy 与 Object.defineProperty 优劣对比
    vue 父组件监听子组件生命周期
    Vue 的父组件和子组件生命周期钩子函数执行顺序
    k8s 集群部署--学习
    Linux命令:ipcs/ipcrm命令
    Python模块
    XAMPP+TestLink
    bug管理工具
    批量管理工具:pssh/ansible
  • 原文地址:https://www.cnblogs.com/charlottepl/p/12573428.html
Copyright © 2011-2022 走看看