我有一个实体,它引用了另一个实体,该实体代表某些属性的当前状态,从而使我能够跟踪所做更改的历史记录。为此,我定义了一个非对称的双向关系,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 一步来坚持这一点,但是 AVersion 表中的每一行的“A_id”列都是空的,所以我将无法检索某个实体 A 的所有历史数据。 AVersion 表。知道为什么没有填写此列吗?
非常感谢!
PS 我曾尝试使用 Envers,但由于一些继承问题而无法使用。