我有一个传统的弹簧批处理作业,我从数据库读取,处理域对象并将其写入文件。
我需要在处理器阶段稍微调整一下功能,以便我可以更新域名对象并将其提交到数据库并将其写入文件。我需要提交立即发生,因为我需要写入阶段的数据库ID。
当我尝试更新域对象并保存它时,我注意到在写入阶段之后实体已经提交了。
有没有办法强制提交在处理器阶段立即发生并像以前一样继续?
答案 0 :(得分:0)
我需要提交即时发生,因为我需要 写阶段的数据库ID。
当您尝试更新(现有)条目时,我不确定您需要什么ID,因为您应该已经拥有该ID
如果你的意思是插入,你可以通过使用数据库特定的函数来获取插入但尚未提交的对象的id来解决这个问题
e.g。对于oracle - Obtain id of an insert in the same statement
当我尝试更新域对象并保存它时,我注意到了 在写入阶段之后,该实体正在提交。
这是期望的行为,因为写入部分是(块)事务中的最后一个,如果成功 - 提交,如果不是 - 回滚,想象一个成功的提交和文件的问题,该项目在数据库的状态是错误的