我使用Hibernate Envers审计变更数据,我有一个类,存储有关公司的信息,如下所示:
@Getter
@Setter
@Entity
@Table(name = "COMPNAY")
@Audited
public class Compnay {
private String name;
private String code;
}
它使用Envers来保存公司的变化
同时,我有一个类来保存这个公司生产的产品的数据,这个类将是这样的:
@Getter
@Setter
@Entity
@Table(name = "COMPNAY")
@Audited
public class Item {
@Column(name = "NAME", nullable = false)
private String name ;
@Column(name = "CODE", nullable = false)
private String code;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "COMPANY_ID", nullable = false)
private Compnay compnay;
}
假设公司表中有这样一个公司:
<表类>ID 名称 代码 tbody><<tr>1 苹果 100 2IBM 200 表类>
是的,您可以编写引用被审计实体的HQL查询。通常,被审计实体的名称与原始实体相同,后缀为_AUD
,即您可以编写类似于以下的查询:
select c, i
from Company_AUD c
left join Item_AUD i on i.id.revision < c.id.revision
where c.originalId = :companyId