使用 spring-batch 和 JPA(由 hibernate 提供)。
我有一个步骤可以执行以下操作:
- 从数据库读取所有客户端(客户端实体)
- 使用来自第 3 方的数据增强它们。ItemProcessor 转到第 3 方数据源,获取它存储在 Client 实体本身(其字段)中的一些数据,但也带来更多存储为不同实体 (ClientSale) 的数据,并且 Client 具有 List 的属性,该属性由多对一。
- 修改后的实体 (Client) 和新实体 (ClientSale) 需要存储在 DB 中。
阅读器部分是直截了当的,对于作者,我使用了 JPAItemWriter。在处理阶段,我尝试更新字段,创建新字段并将它们添加到客户端列表并返回客户端,希望编写器将引用的对象和客户端本身写入数据库。
相反,我收到一条错误消息,指出数据库中不存在 ID 为 #123213213 的 ClientSale。
我该如何克服这个?我应该从我的处理器(客户端 + 所有 ClientSale)返回对象列表(不同类型)吗?JPAItemWriter 可以处理对象列表吗?另一个问题是我必须手动更新 ClientSale 实体中的 client_id 而不是将它们添加到列表中并让休眠状态来理解它们之间的关系以及谁指向哪里..
这里的最佳做法是什么?
谢谢!