异常: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