以某种方式事务回滚不适用于CompositeItemWriter。
我在CompositeItemWriter中有2个更新查询,并且commit-interval为20。 让我们在15条记录之后说,如果我在下次更新时遇到任何问题,那么理想情况下,所有早期记录都应该回滚到之前的状态。但我可以在DB中看到这些记录更新。
任何人都有同样的想法吗?我正在使用Spring批处理的3.0.5.RELEASE版本。
配置
<step id="step1" next="step2">
<tasklet transaction-manager="transactionManager" >
<chunk reader="reader" writer="customItemWriter" commit-interval="20"/>
<transaction-attributes propagation="REQUIRES_NEW" isolation="DEFAULT"/>
</tasklet>
</step>`
<bean id="customItemWriter" class="org.springframework.batch.item.support.CompositeItemWriter">
<property name="delegates">
<list>
<ref bean="updateTable1"/>
<ref bean="updateTable2"/>
<ref bean="fileWriter"/>
</list>
</property>
</bean>
<bean id="updateTable1" class="org.springframework.batch.item.database.JdbcBatchItemWriter">
<property name="assertUpdates" value="true"/>
<property name="dataSource" ref="dataSource"/>
<property name="itemPreparedStatementSetter">
<bean class="com.batch.jdbc.Table1PreparedStatementSetter" />
</property>
<property name="sql"
value="UPDATE TABLE1 SET STATUS = ? WHERE COLUMN1_ID = ?"/>
</bean>
<bean id="updateTable2" class="org.springframework.batch.item.database.JdbcBatchItemWriter">
<property name="assertUpdates" value="true"/>
<property name="dataSource" ref="dataSource"/>
<property name="itemPreparedStatementSetter">
<bean class="com.batch.jdbc.Table2PreparedStatementSetter" />
</property>
<property name="sql"
value="UPDATE TABLE2 SET STATUS = ? WHERE COLUMN2_ID = ?"/>
</bean>
<bean id="fileWriter" class="x.y.z.CustomFileWriter" />