Hibernate Envers のドキュメントを読みましたが、以下を機能させる方法がわかりませんでした:
Address と Order という 2 つのエンティティがあります。注文には住所があります。
注文が作成されたときに、現在の住所リビジョンに固執するようにしたいので、同じ住所が変更された場合 (新しいリビジョンが生成された場合)、注文は作成時の住所リビジョンを指し続けます。
どうすればこれを達成できますか?
Hibernate Envers のドキュメントを読みましたが、以下を機能させる方法がわかりませんでした:
Address と Order という 2 つのエンティティがあります。注文には住所があります。
注文が作成されたときに、現在の住所リビジョンに固執するようにしたいので、同じ住所が変更された場合 (新しいリビジョンが生成された場合)、注文は作成時の住所リビジョンを指し続けます。
どうすればこれを達成できますか?
それは Envers では不可能であり、実際、Envers はそのために作られているわけではありません。
あなたの場合、古いものと新しいものの2つの異なるアドレス「アイデンティティ」があります。したがって、それらは別個のエンティティである必要があります。変更されるのは同じ Address エンティティではありません。
その後、Envers を使用して、関係がどのように変化するかを追跡できます。注文が O で、住所が A1 と A2 であるとします。最初の関係は、O->A1 です。ただし、アドレスが変更されたときに、O->A2 の関係を変更すると、履歴に反映されます。
ただし、エンティティを読み取ると、常に最新バージョンが取得されます。「現在の」エンティティは、履歴エントリを指すことはできません。