更新大型数据集 - Spring事务

时间:2012-03-14 06:55:37

标签: oracle spring

我正在使用Spring声明式事务管理。它仅在完成方法的执行后才提交事务。在Oracle DB中更新超过两万条记录的大型数据集时,我遇到了异常

11:16:44,901 ERROR [STDERR] 
    Caused by: javax.transaction.RollbackException: 
    Transaction TransactionImple < ac, 
    BasicAction: a0002ba:b7d:4f602e7f:80 
    status: ActionStatus.ABORTING > cannot proceed STATUS_ROLLING_BACK
11:16:44,901 ERROR [STDERR]     at org.jboss.resource.connectionmanager.TxConnectionManager.checkTransactionActive(TxConnectionManager.java:332)
11:16:44,901 ERROR [STDERR]     at org.jboss.resource.connectionmanager.BaseConnectionManager2$ConnectionManagerProxy.checkTransactionActive(BaseConnectionManager2.java:972)
11:16:44,901 ERROR [STDERR]     at org.jboss.resource.adapter.jdbc.WrapperDataSource.checkTransactionActive(WrapperDataSource.java:161)
11:16:44,901 ERROR [STDERR]     ... 144 more

如果我使用普通JDBC使用批处理来更新这么大的数据集,那么我将失去事务(ACID)属性的好处。但是我在使用Spring事务管理更新这个大型数据集时遇到了问题。有没有人遇到类似的问题或者可以建议一些替代解决方案?

我正在使用JTATransactionManager和Jboss 5.1以及Spring + iBatis集成。

0 个答案:

没有答案