当前位置: 首页 > 知识库问答 >
问题:

尝试在Spring Batch中ItemReader之后更新记录;未提交到数据库

雍兴修
2023-03-14

我有一个自定义的项目阅读器,它读取数据另一个阅读器是JDBCursorItemReader(它从数据库中的请求表中读取数据),构建一个特定大小的列表并返回一个项目列表。

我在更新请求状态的方法上使用@transactional(propagation=propagation.requires_ne W)。

我对spring批处理表和应用程序特定的表使用单独的数据源和事务管理器。

我正在使用JDBC模板更新状态。

共有1个答案

朱宜
2023-03-14

通常使用ChunkListener处理此场景。侦听器的beforeChunk用于“标记”所有要读取的项,然后侦听器的afterChunk处理项经过ben处理后的后续更新。另一种方法是使用StepExecutionListener标记步骤中要处理的所有项。

关于正在发生的事情,听起来像是遇到了嵌套事务的问题。因为您有一个外部事务,所以在外部事务提交之前,内部事务不会被应用。

 类似资料:
  • 这里是logcat: 06-24 13:33:04.226 23618-23618/?E/Android Runtime︰致命的例外:主要过程:com.example.saleh.findmypassword,PID:23618java.lang.非法争论例外:未知Uri:content://com.example.saleh.findmypassword.provider/PInfos/1com

  • 这是我正在接收的数据,如果阵列中不存在id,则希望添加新记录,如果阵列中没有id,则还希望更新记录 我的模型:课堂课程 课堂主题 类用户 这是通过PostMan从Rails API接收的数组[{"title":"Topic Name","path_url":"https://resource-asws-path-url" }, { "id": 2311,"title":"Topic Name","

  • 我正在尝试在沙盒中对Salesforce中Account对象中的一个字段进行简单更新,但它似乎没有提交。我遵循如下所述的提取和更新记录的基本原则: 运行这段代码后查看日志,可以看出更新已经完成,因为我能够提取帐户,它显示了带有更新字段的帐户。以下是两个调试显示的内容: Debug1:|调试|帐户:{Id=12345}(通信气泡为空) Debug2:|调试|帐户:{Id=12345,Communic

  • 问题内容: 这段代码正在更新薪水为13000的所有记录。 相反,我想将薪水为1300的记录更新为值13000。 您能告诉我我在哪里出错吗? 我正在使用隐式游标访问记录.. 对于每个记录,我正在检查该记录的sal值.. 如果特定记录中的薪水值是1500,我想将其更新为15000。 问题答案: 只要您可以使用一条语句进行更新,就应该这样做,而不要使用循环。这样,您将获得非常巨大的性能提升。或者反之,循

  • 我在JTA和Wildfly8中使用Eclipselink,问题是在提交用户事务并将数据插入数据库后,它不会更新相关实体,所以如果我重新加载页面或打开页面的新实例,它加载数据时不会插入行。

  • 在游标和循环的帮助下,我将记录插入表中。关闭游标后,我编写了update语句来更新游标插入的一些记录,这样reords就不会更新。但我在外面进行了查询,然后更新了记录 我的尝试是删除程序,如果存在kpsf_inopdormantac; 请帮帮我