如果Spring Batch中的事务失败,如何停止JpaItemWriter?

时间:2017-01-19 09:19:40

标签: java spring hibernate spring-batch

我使用Spring Batch将数据插入数据库。当我想要插入的数据中出现错误时(因此,没有插入数据),我希望作者停止整个工作。

这是我的工作:

<step id="recopyTotoStep">
    <tasklet>
         <chunk reader="totoReader"
                processor="totoProcessor"
                writer="totoWriter"
                commit-interval="5000" />
    </tasklet>
    <next on="*" to="anotherStep" />
    <end on="???" />
</step>

这是我的豆子:

  <bean id="totoWriter"
        class="org.springframework.batch.item.database.JpaItemWriter">
      <property name="entityManagerFactory" ref="myEmf" />
  </bean>

以下是我可以提供的例外情况:

  

java.lang.IllegalStateException:相同的多个表示   实体   [some_entity ...]   正在合并。管理:   [other_entity ...];独立:   [some_entity ...]

我知道我可以添加一个步骤“决定”(我将添加一些控件),它将解决我的问题,但我想确定不可能像我解释的那样。

1 个答案:

答案 0 :(得分:1)

我就是这么做的,它就像我想要的那样。

<step id="recopyTotoStep">
        <tasklet>
             <chunk reader="totoReader"
                    processor="totoProcessor"
                    writer="totoWriter"
                    commit-interval="5000" />
        </tasklet>
        <next on="COMPLETED" to="anotherStep" />
        <end on="*" />
    </step>