Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
中断正在运行的spring mybatis事务_Spring_Transactions_Interrupt_Mybatis_Spring Transactions - Fatal编程技术网

中断正在运行的spring mybatis事务

中断正在运行的spring mybatis事务,spring,transactions,interrupt,mybatis,spring-transactions,Spring,Transactions,Interrupt,Mybatis,Spring Transactions,spring和mybatis是否可以中断正在执行的mybatis数据库事务 例如: 我有一个将数千条记录插入oracle SQL数据库的应用程序。这大约需要5分钟。如果用户在插入记录时按下“停止”按钮,我希望停止数据库事务并回滚更改 一旦数据库过程完成,我可以使用事务管理器回滚事务: TransactionStatus status = txManager.getTransaction(def); txManager.rollback(status) 但我无法在事务运行时中断它 在JDBC中,

spring和mybatis是否可以中断正在执行的mybatis数据库事务

例如:

我有一个将数千条记录插入oracle SQL数据库的应用程序。这大约需要5分钟。如果用户在插入记录时按下“停止”按钮,我希望停止数据库事务并回滚更改

一旦数据库过程完成,我可以使用事务管理器回滚事务:

TransactionStatus status = txManager.getTransaction(def);
txManager.rollback(status)
但我无法在事务运行时中断它

在JDBC中,我只需执行:
PreparedStatement.cancel()

我曾试图在MyBatis中获得这份准备好的声明,但我认为这是不可能的


有人能解决这个问题吗?

我认为您可以从会话工厂获取当前会话,然后调用session.cancelQuery(),我认为inturn可以使用db调用来取消查询执行

根据hibernate文档,它是线程安全的

取消当前查询的执行。这是唯一的方法 可以从另一个线程安全调用的会话


我也找不到办法。这将是一个很好的增强。我在我的项目中使用myBatis而不是Hibernate,但无论如何我都感谢您的帮助我没有使用myBatis,但我认为您仍然可以通过获取当前打开的连接/会话来使用此解决方案,然后按方面取消查询。