使用 Spring Batch 读取器和写入器从同一数据库读取和写入时如何强制实体更新?

时间:2021-07-28 11:37:01

标签: hibernate jpa spring-batch writer hibernate-entitymanager

一个简单的 Spring Batch 作业,包含一个读者和一个作者。

用例:

  1. 从数据库中读取特定实体的所有记录。
  2. 将所有记录写回数据库。

要点:

  • 它是同一个数据库和表。

  • 读取实体根本没有改变。

这样做的原因是实现了自定义 UserType。它会在插入 (nullSafeSet()) 之前对值进行加密,目前无法更改此行为。

预期行为:实体在 DB 中更新。
实际行为:实体未在数据库中更新。


进一步调查表明,EntityManager 没有意识到有变化,因此没有合并实体。

问题:怎么样可以强制 EntityManager 写回数据库吗?

我尝试将阅读器用作 JpaPagingItemReader,它应该在阅读和 HibernateCursorItemReader 后刷新。我也尝试使用 JpaItemWriterHibernateItemWriter 作为作者,但无济于事。

0 个答案:

没有答案
相关问题