异常:Transaction not successfully started

异常:org.hibernate.TransactionException: Transaction not successfully started

错误代码:
service层
        Session session = HibernateUtils.getCurrentSession();
        //....数据库操作语句(调用dao层)
        Transaction tx = session.beginTransaction();
        tx.commit();
dao层
    Session session = HibernateUtils.getCurrentSession();
        //....数据库操作语句
        Transaction tx = session.beginTransaction();
        tx.commit();

异常详情:

![](http://i2.51cto.com/images/blog/201811/01/b3a475128fe693546c7d8d34cefac421.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

一翻检查分析后发现原因:

原来是我在同一个线程中创建了两个事务对象,
这违背了事务ACID特性中的 Isolation隔离性。

解决方案:

只要把dao层重复的事务代码去掉即可,如下:
    Transaction tx = session.beginTransaction();
    tx.commit();

原文地址:http://blog.51cto.com/14008076/2311437

时间: 2024-10-24 21:58:25

异常:Transaction not successfully started的相关文章

有关Transaction not successfully started问题解决办法

我的项目配置:struts2+hibernate3.3+spring3.2.5 主要问题:在进行更新和提交操作时出现以下异常 org.springframework.transaction.TransactionSystemException: Could not commit Hibernate transaction; nested exception is org.hibernate.TransactionException: Transaction not successfully st

Hibernate 错误解决(TransactionException: Transaction not successfully started)

[关键的错误信息]: TransactionException: Transaction not successfully started 和一个doCommit 从该关键字看,是使用Hibernate事务管理器(而不是Spring,下面详细log的绿色字体)处理事务的commit时抛出的, [具体解决]: //下面的代码段会报错 Session session = getSessionFactory().getCurrentSession(); session.beginTransaction

Transaction not successfully started&&Could not commit Hibernate transaction;

记录一下这个问题,解决方法是分两种情况, 一种是getCurrentSession();这种情况加入配置:<property name="hibernate.current_session_context_class">thread</property> 一种是:getSession的 在修改操作后加上 finally   {       session.close();      }

org.hibernate.TransactionException: Transaction not successfully started

http://www.yinyuetai.com/playlist/3310702http://www.yinyuetai.com/playlist/3310711http://www.yinyuetai.com/playlist/3310712http://www.yinyuetai.com/playlist/3310724http://www.yinyuetai.com/playlist/3310725http://www.yinyuetai.com/playlist/3310739http

Hibernate Session &amp; Transaction详解

Hibernate Session & Transaction详解 HIbernate中的Session Session是JAVA应用程序和Hibernate进行交互时使用的主要接口,它也是持久化操作核心API, 注意这里的Session的含义,它与传统意思上web层的HttpSession并没有关系,Hibernate Session之与Hibernate,相当于JDBC Connection相对与JDBC. Session对象是有生命周期的,它以Transaction对象的事务开始和结束边界

JDBC Transaction Management Example---reference

In this post, we want to talk about JDBC Transactions and how we can manage the operations in a database. The most popular DBMS like MySQL and Oracle have by default the option autocommit enabled, it means immediately after any DML Operation saves th

code is 9998;desc is 插入失败exception is org.hibernate.exception.JDBCConnectionException: Could not op

1.错误描述 [ERROR:]2015-05-05 09:27:12,090 [插入失败] org.hibernate.exception.JDBCConnectionException: Could not open connection at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:132) at org.hibernate.exce

In-Memory:内存优化表的事务处理

内存优化表(Memory-Optimized Table,简称MOT)使用乐观策略(optimistic approach)实现事务的并发控制,在读取MOT时,使用多行版本化(Multi-Row versioning)创建数据快照,读操作不会对数据加锁,因此,读写操作不会相互阻塞.写操作会申请行级锁,如果两个事务尝试更新同一数据行,SQL Server检测到写-写冲突,产生错误(Error 41302),将后后创建的事务作为失败者,回滚事务的操作.虽然MOT事务使用无锁结构(Lock-Free)

一次寻找IBatisNet事务bug的过程

本文的上下文环境 操作系统:Win7 x64 Professional 开发工具:Visual Studio 2017   语言:C# 数据库ORM:IBatisNet 1.6.2 一.前言 这个项目的前端有Web端,公众号,微信小程序,后端是用WCF写的,部署成windows service.后端使用了IBatisNet这样的轻量级ORM框架,sql是写在xml里面的,每个模块都有一个xml文件.sql的返回值对应的实体类配置在同一个xml文件里,像这样. 二.问题出现 这个项目一直运行的很正