我有一个实体,它引用了代表某些属性当前状态的另一个实体,从而允许我跟踪所做更改的历史记录。为此,我定义了一个非对称的双向关系,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”列都是空的,所以我将无法检索某个实体的所有历史数据看着AVersion表。知道为什么这个专栏没有填写?
非常感谢!
P.S。我曾尝试使用Envers,但由于某些继承问题而无法使用。