我使用spring-batch
进行数据导入。但在writer()
步骤中,我不想保留已处理的项目,而是从数据库中删除它们(通过ID)。
问题:像ItemWriters
这样的JpaItemWriter
仅用于保留项目。是否有任何作家可以通过CrudRepository
传递repository.delete(id)
?
答案 0 :(得分:1)
JpaItemWriter
不支持删除。但是......我们确实有RepositoryItemWriter
可以配置调用的方法。因此,在您的情况下,您可以将其与Spring Data中的JpaRepository
结合使用,并将该方法配置为删除。这将删除您传入的项目(如果您要通过ID删除,您想要创建一个处理该项目并返回ID的处理器)。您可以在此处详细了解RepositoryItemWriter
:https://docs.spring.io/spring-batch/apidocs/org/springframework/batch/item/data/RepositoryItemWriter.html
作为替代方案,您可以继承JpaItemWriter
并覆盖doWrite
方法以调用entityManager.remove
而不是当前正在执行的entityManager.merge
...