【问题标题】:How to delete objects in ItemWriter?如何删除 ItemWriter 中的对象?
【发布时间】:2016-02-15 10:09:10
【问题描述】:

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

问题:ItemWriters 之类的 JpaItemWriter 仅用于持久化项目。有没有我可以通过CrudRepository 并调用repository.delete(id) 的作家?

【问题讨论】:

  • 我不这样;但是写一个自定义的应该很容易

标签: java spring spring-batch


【解决方案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...

【讨论】:

  • 这里可能不是正确的地方,但我认为你的 javadoc 在 RepositoryItemWriter 的类描述中有一个复制粘贴错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-28
  • 2011-01-12
  • 1970-01-01
相关资源
最近更新 更多