gpt4 book ai didi

hibernate 环境 : Delete Data from _AUD table using native query

转载 作者:行者123 更新时间:2023-12-01 13:17:07 25 4
gpt4 key购买 nike

我正在使用 hibernate 4,我们的项目正在使用 Hibernate Envers。这个表在这些年积累了很多数据。最近,企业制定了只保留 6 个月审计数据的政策。

现在我的问题是我们可以使用 native 查询从这个 _AUD 表中删除数据吗?我想删除超过 6 个月的数据。

最佳答案

每个审计表在修订实体表上都有一个条目。此修订实体表具有修订日期信息。您可以使用该日期从该审计表中删除行。但是您需要在修订实体表和 sometable_aud(具有实体版本)之间进行连接,使用修订实体表中的 idrev 来自 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;

}

您可以在 native 查询中使用此 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 环境 : Delete Data from _AUD table using native query,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53835998/

25 4 0