在spring批处理作业的进程阶段提交数据库

时间:2012-03-06 12:41:16

标签: spring-batch

我有一个传统的弹簧批处理作业,我从数据库读取,处理域对象并将其写入文件。

我需要在处理器阶段稍微调整一下功能,以便我可以更新域名对象并将其提交到数据库并将其写入文件。我需要提交立即发生,因为我需要写入阶段的数据库ID。

当我尝试更新域对象并保存它时,我注意到在写入阶段之后实体已经提交了。

有没有办法强制提交在处理器阶段立即发生并像以前一样继续?

1 个答案:

答案 0 :(得分:0)

  

我需要提交即时发生,因为我需要   写阶段的数据库ID。

当您尝试更新(现有)条目时,我不确定您需要什么ID,因为您应该已经拥有该ID

如果你的意思是插入,你可以通过使用数据库特定的函数来获取插入但尚未提交的对象的id来解决这个问题

e.g。对于oracle - Obtain id of an insert in the same statement

  

当我尝试更新域对象并保存它时,我注意到了   在写入阶段之后,该实体正在提交。

这是期望的行为,因为写入部分是(块)事务中的最后一个,如果成功 - 提交,如果不是 - 回滚,想象一个成功的提交和文件的问题,该项目在数据库的状态是错误的