Spring mvc Spring JDBC:Oracle事务错误在120秒后退出

Spring mvc Spring JDBC:Oracle事务错误在120秒后退出,spring-mvc,oracle11g,spring-data,Spring Mvc,Oracle11g,Spring Data,对于一个特定的需求,我必须遍历50000条记录的列表,并将它们插入数据库。要求是,如果50000条记录中的任何一条失败,则应回滚所有其他记录。因此,我们在处理过程中没有涉及任何提交。但这导致了以下错误: [2/1/16 14:01:47:939 CST]000000系统输出错误 org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback;SQL[INSERT]的未分类SQLException 转换为…

对于一个特定的需求,我必须遍历50000条记录的列表,并将它们插入数据库。要求是,如果50000条记录中的任何一条失败,则应回滚所有其他记录。因此,我们在处理过程中没有涉及任何提交。但这导致了以下错误:

[2/1/16 14:01:47:939 CST]000000系统输出错误 org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback;SQL[INSERT]的未分类SQLException 转换为…)值(…)];SQL状态[null];错误代码[0];现在的 线程在超过[120]秒的时间内未提交,可能会导致 不需要的锁。请重构代码以提交更多信息 经常

现在,当我们实现批处理时——我们使用PreparedStatement.executeBatch()方法以100个批插入数据,上面的错误不会出现。批处理的自动提交默认设置为true,因此每次批处理执行后都会进行提交

有人能建议我们如何处理上述情况下的回滚机制吗。如果第50批执行失败,那么我们希望恢复之前的所有49批执行。我们正在使用SpringData/JDBC、Oracle11g数据库、WebSphereApplicationServer。我在某个地方读到,上面的120秒提交超时也可以在WebSphere的JTA设置中配置。是这样吗?请提出任何替代方案或其他可能的解决方案


提前感谢。

您必须将“自动提交”设置为false,并且只有在所有批处理都成功执行的情况下才能在最后提交