Hibernate Envers:使用本机查询从 _AUD table 中删除数据
Hibernate Envers: Delete Data from _AUD table using native query
我正在使用 hibernate 4,我们的项目正在使用 Hibernate Envers。 table这几年积累了很多数据。最近业务制定了只保留 6 个月审计数据的政策。
现在我的问题是我们可以使用本机查询从这个 _AUD table 中删除数据吗?我想删除超过 6 个月的数据。
每个审计 table 都有一个关于修订实体 table 的条目。此修订实体 table 具有修订日期信息。您可以使用该日期从此审计中删除行 table。但是您需要使用来自修订实体 table 的 id
和 [=来自 sometable_aud.
的 14=] 字段
如果您有这样的修订实体:
@Entity
@RevisionEntity(RevisionEntityListener.class)
public class RevEntity {
@Id
@GeneratedValue
@RevisionNumber
private int id;
@Column(name = "revision_date", nullable = false)
@RevisionTimestamp
@Temporal(TemporalType.TIMESTAMP)
private Date revisionDate;
}
您可以在本机查询中使用此 SQL:
String sql = "DELETE sometable_aud
FROM sometable_aud sometable_aud
JOIN sometable sometable
ON sometable.id = sometable_aud.id
JOIN rev_entity rev_entity
ON sometable_aud.rev = rev_entity.id
WHERE rev_entity.revision_date > '2018-06-18 00:00:00.0000000'";
entityManager.executeUpdate(sql);
我正在使用 hibernate 4,我们的项目正在使用 Hibernate Envers。 table这几年积累了很多数据。最近业务制定了只保留 6 个月审计数据的政策。
现在我的问题是我们可以使用本机查询从这个 _AUD table 中删除数据吗?我想删除超过 6 个月的数据。
每个审计 table 都有一个关于修订实体 table 的条目。此修订实体 table 具有修订日期信息。您可以使用该日期从此审计中删除行 table。但是您需要使用来自修订实体 table 的 id
和 [=来自 sometable_aud.
如果您有这样的修订实体:
@Entity
@RevisionEntity(RevisionEntityListener.class)
public class RevEntity {
@Id
@GeneratedValue
@RevisionNumber
private int id;
@Column(name = "revision_date", nullable = false)
@RevisionTimestamp
@Temporal(TemporalType.TIMESTAMP)
private Date revisionDate;
}
您可以在本机查询中使用此 SQL:
String sql = "DELETE sometable_aud
FROM sometable_aud sometable_aud
JOIN sometable sometable
ON sometable.id = sometable_aud.id
JOIN rev_entity rev_entity
ON sometable_aud.rev = rev_entity.id
WHERE rev_entity.revision_date > '2018-06-18 00:00:00.0000000'";
entityManager.executeUpdate(sql);