hibernate中双向非对称关系的映射:OneToOne-ManyToOne

hibernate中双向非对称关系的映射:OneToOne-ManyToOne,hibernate,one-to-one,many-to-one,bidirectional,asymmetric,Hibernate,One To One,Many To One,Bidirectional,Asymmetric,我有一个实体,它引用了另一个实体,表示某些属性的当前状态,从而允许我跟踪所做更改的历史。为此,我定义了一个非对称的双向关系,其中一方负责持久性,两个实体都保留对另一个实体的引用,这样我可以从一方获取最新版本,另一方获取实体的所有版本。这是我的映射: 在实体中: @OneToOne(cascade = CascadeType.ALL) @JoinColumn(name = "version_id", nullable = true, updatable = true) private AVersi

我有一个实体,它引用了另一个实体,表示某些属性的当前状态,从而允许我跟踪所做更改的历史。为此,我定义了一个非对称的双向关系,其中一方负责持久性,两个实体都保留对另一个实体的引用,这样我可以从一方获取最新版本,另一方获取实体的所有版本。这是我的映射:

在实体中:

@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "version_id", nullable = true, updatable = true)
private AVersion currentVersion;
在厌恶实体中:

@ManyToOne
@JoinColumn(name = "A_id", insertable=false, updatable=false)
private A a;
现在,这允许我将其保存在A中的一个步骤中,但是列“A_id”对于厌恶表中的每一行都是空的,因此我无法检索厌恶表中某个实体A的所有历史数据。你知道为什么这个专栏没有被填满吗

多谢各位


另外,我尝试过使用Envers,但由于一些继承问题而无法使用。

嗯,不得不说我最终无法做到这一点。我认为不支持非对称双向映射。无论如何,我认为envers可以帮助摆脱版本等等,因为他们纠正了他们的继承问题,或者我可以通过查询检索最新版本,而不是进行映射。。。但最后选择了使用null AVersion持久化父实体,然后使用父chil关系集更新它。