如何删除ItemWriter中的对象?

时间:2016-02-15 10:09:11

标签: java spring spring-batch

我使用spring-batch进行数据导入。但在writer()步骤中,我不想保留已处理的项目,而是从数据库中删除它们(通过ID)。

问题:像ItemWriters这样的JpaItemWriter仅用于保留项目。是否有任何作家可以通过CrudRepository传递repository.delete(id)

1 个答案:

答案 0 :(得分:1)

JpaItemWriter不支持删除。但是......我们确实有RepositoryItemWriter可以配置调用的方法。因此,在您的情况下,您可以将其与Spring Data中的JpaRepository结合使用,并将该方法配置为删除。这将删除您传入的项目(如果您要通过ID删除,您想要创建一个处理该项目并返回ID的处理器)。您可以在此处详细了解RepositoryItemWriterhttps://docs.spring.io/spring-batch/apidocs/org/springframework/batch/item/data/RepositoryItemWriter.html

作为替代方案,您可以继承JpaItemWriter并覆盖doWrite方法以调用entityManager.remove而不是当前正在执行的entityManager.merge ...