【发布时间】:2012-03-23 22:40:00
【问题描述】:
我有一个传统的 spring-batch 作业,我从数据库中读取,处理域对象并将其写入文件。
我需要在处理器阶段稍微调整功能,以便我可以更新域对象并将其提交到数据库并将其写入文件。我需要立即提交,因为我需要数据库 ID 用于写入阶段。
当我尝试更新域对象并保存它时,我注意到实体在写入阶段之后被提交。
有什么方法可以强制提交在处理器阶段立即发生并像以前一样继续?
【问题讨论】:
标签: spring-batch
我有一个传统的 spring-batch 作业,我从数据库中读取,处理域对象并将其写入文件。
我需要在处理器阶段稍微调整功能,以便我可以更新域对象并将其提交到数据库并将其写入文件。我需要立即提交,因为我需要数据库 ID 用于写入阶段。
当我尝试更新域对象并保存它时,我注意到实体在写入阶段之后被提交。
有什么方法可以强制提交在处理器阶段立即发生并像以前一样继续?
【问题讨论】:
标签: spring-batch
我需要立即提交,因为我需要 写入阶段的数据库 ID。
当您尝试更新(现有)条目时,我不确定您需要什么 id,因为您应该已经有了一个
如果您的意思是插入,您可以通过使用数据库特定函数来获取已插入但尚未提交的对象的 id 来解决此问题
例如对于甲骨文 - Obtain id of an insert in the same statement
当我尝试更新域对象并保存它时,我注意到 实体在写入阶段后被提交。
这是期望的行为,因为写入部分是(块)事务中的最后一个,如果成功 - 提交,如果不成功 - 回滚,想象一个成功的提交和文件问题,文件中的项目数据库会有错误的状态
【讨论】: