特定のプロパティの現在の状態を表す別のエンティティへの参照を持つエンティティがあるため、変更履歴を追跡できます。このために、対称ではない双方向の関係を定義しました。OneToOne が永続性を担当し、両方のエンティティが他方への参照を保持しているため、一方から最新バージョンを取得し、他方で取得できます。エンティティのすべてのバージョン。これは私のマッピングです:
A エンティティでは:
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "version_id", nullable = true, updatable = true)
private AVersion currentVersion;
および AVersion エンティティで:
@ManyToOne
@JoinColumn(name = "A_id", insertable=false, updatable=false)
private A a;
これで、A を介して 1 ステップでこれを永続化できますが、列「A_id」は AVersion テーブルのすべての行で空であるため、調べている特定のエンティティ A のすべての履歴データを取得することはできません。 AVersion テーブル。この列が埋められていない理由は何ですか?
どうもありがとうございました!
PS Envers を使用してみましたが、継承の問題が原因でできませんでした。