各位大哥,最近一直有一个问题一直困扰着我。
     最近我在做一个小项目我用到了spring的编程式事务并且对它进行了简单的封装  public class MyTransactionManager
    {
        private  IPlatformTransactionManager TransactionManager;
        private ITransactionStatus status;
        public MyTransactionManager()
        {
           TransactionManager = ServiceContainer.Container.IPlatformTransactionManager;
           DefaultTransactionDefinition def = new DefaultTransactionDefinition();
           def = new DefaultTransactionDefinition();
           def.PropagationBehavior = TransactionPropagation.Required;
            status = TransactionManager.GetTransaction(def);
        }
                 public void Commit()
        {
            TransactionManager.Commit(status);
        }
              public void Rollback()
        {
            TransactionManager.Rollback(status);
        }
    }
 使用的时候是
try
{
MyTransactionManager m=new MyTransactionManager();
//
//中间的逻辑代码(通过的hibernate进行数据库访问)
//
m.Commit()
}
catch(Exception e)
{
m.Rollback();
}
有时候当我单击某个按钮的时候程序就死在那里了,然后走断点的时候我发现当执行m.commit()的时候语句程序感觉上就被挂起了(程序不动了),过了一会报错
"Hibernate flusing: could not update: [DZ.BookingSystem.KBP.Model.RunnerOperation#12][SQL: UPDATE runneroperation SET RunnerDate = ?, BookingCountOfToday = ?, BookingUserCountInfield = ?, BookingQueueCount = ?, HadGetNumCount = ?, HadCalledBookingUserCount...
 然后在不关闭程序的情况下,我去数据库主动操作刚刚在程序中操作的数据,同样无法操作,并报超时的错误。但是过了一会(在不关闭程序的情况下)我再走一次执行过的那段代码又恢复正常了(能够事务提交并且数据库变化)(请注意:是在没有重新启动项目的情况下),真的觉得好奇怪,谁能帮我解释下为什么?(要说明的是,在程序启动的时候,我开了其他几条死循环线程,同样会用到事务提交,我不知道会不会和这个错误有关联?)各位大哥,小弟在这里谢谢你们了,帮我看看吧!!!!!!!!