如何删除 ItemWriter 中的对象?
How to delete objects in ItemWriter?
我正在使用 spring-batch
进行数据导入。但是在 writer()
步骤中,我不想保留已处理的项目,而是从数据库中删除它们(通过 id)。
问题:像 JpaItemWriter
这样的 ItemWriters
只是用于持久化项目。有没有作家可以让我通过 CrudRepository
并调用 repository.delete(id)
?
JpaItemWriter
不支持删除。但是...我们确实有一个 RepositoryItemWriter
,您可以配置调用的方法。因此,在您的情况下,您可以将它与 Spring 数据中的 JpaRepository
结合使用,并将方法配置为删除。这将删除您传入的项目(如果您要按 id 删除,您需要创建一个处理器来接收该项目并返回 id)。您可以在此处阅读有关 RepositoryItemWriter
的更多信息:https://docs.spring.io/spring-batch/apidocs/org/springframework/batch/item/data/RepositoryItemWriter.html
作为替代方案,您可以子类化 JpaItemWriter
并覆盖 doWrite
方法以调用 entityManager.remove
而不是它当前执行的 entityManager.merge
...
我正在使用 spring-batch
进行数据导入。但是在 writer()
步骤中,我不想保留已处理的项目,而是从数据库中删除它们(通过 id)。
问题:像 JpaItemWriter
这样的 ItemWriters
只是用于持久化项目。有没有作家可以让我通过 CrudRepository
并调用 repository.delete(id)
?
JpaItemWriter
不支持删除。但是...我们确实有一个 RepositoryItemWriter
,您可以配置调用的方法。因此,在您的情况下,您可以将它与 Spring 数据中的 JpaRepository
结合使用,并将方法配置为删除。这将删除您传入的项目(如果您要按 id 删除,您需要创建一个处理器来接收该项目并返回 id)。您可以在此处阅读有关 RepositoryItemWriter
的更多信息:https://docs.spring.io/spring-batch/apidocs/org/springframework/batch/item/data/RepositoryItemWriter.html
作为替代方案,您可以子类化 JpaItemWriter
并覆盖 doWrite
方法以调用 entityManager.remove
而不是它当前执行的 entityManager.merge
...