スプリングバッチとJPA(休止状態で提供)を使用します。
次の手順があります。
- DB(クライアントエンティティ)からすべてのクライアントを読み取ります
- サードパーティからのデータでそれらを強化します。ItemProcessorはサードパーティのデータソースに移動し、クライアントエンティティ自体(そのフィールド)に格納されているデータをフェッチしますが、さまざまなエンティティ(ClientSale)として格納されているデータをさらに取得し、クライアントには次のようにマップされるListのプロパティがあります。 ManyToOne。
- 変更されたエンティティ(Client)と新しいエンティティ(ClientSale)はDBに保存する必要があります。
リーダーの部分は単純明快で、ライターにはJPAItemWriterを使用しました。処理段階で、フィールドを更新し、新しいフィールドを作成してクライアントのリストに追加し、クライアントを返すことを試みました。ライターが参照されるオブジェクトとクライアント自体の両方をDBに書き込むことを期待しています。
代わりに、ID#123213213のClientSaleがDBに存在しないというエラーが発生しました。
これを克服するにはどうすればよいですか?プロセッサ(クライアント+すべてのClientSale)からオブジェクト(さまざまなタイプ)のリストを返す必要がありますか?JPAItemWriterはオブジェクトのリストを処理できますか?これに関するもう1つの問題は、ClientSaleエンティティをリストに追加して休止状態にする代わりに、ClientSaleエンティティのclient_idを手動で更新して、それらと誰がどこを指しているのかを理解する必要があることです。
ここでのベストプラクティスは何ですか?
ありがとう!