我正在使用4.3.6 hibernate和envers。
我有2个实体A和B.A是主要实体,B是A的子部分。
它们是一对一和双向的。
他们都是@Audited,当我保存A:
时会发生3种情况我将始终保存实体A和级联B进行更新。如何在方案3中对实体A进行修订?非常感谢!!!
对于数据模式,我的架构是根据这篇文章的答案配置的: 我的数据架构:
@Entity
@Audited
public class B implements Serializable {
....
//bi-directional one-to-one association to A
@MapsId
@OneToOne(mappedBy="b", cascade=CascadeType.ALL)
@JoinColumn(name="A_ID")
private A a;
}
@Entity
@Audited
@Table(name="A")
public class A implements Serializable {
...
//bi-directional one-to-one association to B
@OneToOne(cascade=CascadeType.ALL)
@PrimaryKeyJoinColumn
private B b;
当我保存持久性实体A(A未被修改且B被修改)时,
Hibernate generated sql
Hibernate: update A set ...
Hibernate: update B set ...
Hibernate: update C set ...
Hibernate: insert into RevEntity (CREATE_DATE, timestamp, username, id) values (?, ?, ?, ?)
Hibernate: insert into B_AUD ...
答案 0 :(得分:0)
很遗憾,当您直接修改A
时,无法强制Envers修改B
。您必须在业务/持久性代码中触发该要求,以更改A
上的值,以便它包含在您的用例的修订中。