如何解决将审计表的引用放到 Hibernate Envers 中的另一个表
我正在使用 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 | 姓名 | 代码 |
---|---|---|
1 | 苹果 | 100 |
2 | IBM | 200 |
项目表中的数据将如下所示:
ID | 姓名 | 代码 | COMPANY_ID |
---|---|---|---|
3 | iPhone | 300 | 1 |
4 | iPad | 400 | 1 |
如果我编辑Apple公司的信息并将代码从100更改为300,如何使用以前的代码获取更改之前保存的Items的信息?有没有办法引用审计表?
解决方法
是的,您可以编写引用审计实体的 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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。