异常: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();

猜你喜欢

转载自blog.51cto.com/14008076/2311437