各位大哥,最近一直有一个问题一直困扰着我。
最近我在做一个小项目我用到了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...
然后在不关闭程序的情况下,我去数据库主动操作刚刚在程序中操作的数据,同样无法操作,并报超时的错误。但是过了一会(在不关闭程序的情况下)我再走一次执行过的那段代码又恢复正常了(能够事务提交并且数据库变化)(请注意:是在没有重新启动项目的情况下),真的觉得好奇怪,谁能帮我解释下为什么?(要说明的是,在程序启动的时候,我开了其他几条死循环线程,同样会用到事务提交,我不知道会不会和这个错误有关联?)各位大哥,小弟在这里谢谢你们了,帮我看看吧!!!!!!!!
最近我在做一个小项目我用到了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...
然后在不关闭程序的情况下,我去数据库主动操作刚刚在程序中操作的数据,同样无法操作,并报超时的错误。但是过了一会(在不关闭程序的情况下)我再走一次执行过的那段代码又恢复正常了(能够事务提交并且数据库变化)(请注意:是在没有重新启动项目的情况下),真的觉得好奇怪,谁能帮我解释下为什么?(要说明的是,在程序启动的时候,我开了其他几条死循环线程,同样会用到事务提交,我不知道会不会和这个错误有关联?)各位大哥,小弟在这里谢谢你们了,帮我看看吧!!!!!!!!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货