Я использую Spring декларативное управление транзакциями. Он фиксирует транзакцию только после завершения метода. Обновляя большой набор данных из более чем двадцати тысяч записей в базе данных Oracle, я получаю исключение
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.