「エンティティIDで差分を保存する」という質問に対して、次の回答が見つかりました。
「エンティティの場合、Id プロパティを null にすることはできないため、このクラスを ValueObject としてマップする必要があります。その場合、Id プロパティは通常のプロパティとして扱われ、このオブジェクトの GlobalId には移動しません。」
私の質問は:
Id が NULL の場合、エンティティを NEW として扱うことができないのはなぜですか?
データベースからフェッチされたオブジェクト グラフがあり、2 つの javas コミットの間にエンティティがグラフのリストに追加されます。
- 2 つのコミットと 2 番目のコミットには新しいエンティティがあります (ID NULL)
- Java は GlobalId を作成できないため、change => 例外を取得します。
EntityManager - persist (Id:s を作成) を実行することでこれを回避できますが、それは避けたいと思います。現在のコードは、後で永続化するか、トランザクションを終了させるだけです。
Id が NULL であるため、エンティティは NEW です。GlobalId を作成できるように、一意の一時 ID (Id = NULL を許可) を生成することは可能でしょうか? 変更リストでは、エンティティは NEW として報告されます。以前のコミットと比較する必要はありません。