事务回滚不适用于CompositeItemWriter

时间:2015-12-10 05:06:14

标签: spring-batch spring-transactions

以某种方式事务回滚不适用于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" />

0 个答案:

没有答案