如何 运行 自定义审计查询 table hibernate envers

How to run Custom query on audit table hibernate envers

正在尝试通过 audit table 上的自定义查询来检索记录。我有如下 Hibernate 实体结构..,

@Audited
@Entity
public class TableA {
    @EmbeddedId
    private PrimaryKeyID primaryKeyID;
    private Double price;
    private Date modifiedOn;
    private String status;
}
@Embeddable
public class PrimaryKeyID implements Serializable {
    private Integer Id;
}

我试图通过 AuditFactory 复制的查询是

SELECT * FROM table_A_aud where id = ? and status=? order by modifiedOn desc limit 3;

尝试了 Hibernate 关于 Envers 的文档,但我没有找到太多相关信息。有人可以帮我解决这个问题吗?

为了对审计表发出查询,您需要执行以下操作:

List results = AuditReaderFactory.get( session )
  .createQuery()
  .forRevisionsOfEntity( TableA.class, true, false )
  .add( AuditEntity.id().eq( entityId ) )
  .add( AuditEntity.property( "status" ).eq( entityStatus ) )
  .addOrder( AuditEntity.property( "modifiedOn" ).desc() )
  .setMaxResults( 3 )
  .getResultList();

在此查询中,我们指示 reader 仅获取实体 ID 等于 entityId 且状态等于 entityStatus 的实体实例(不包括删除标记)并根据 modifiedOn 列降序排列结果。

您会注意到此查询的很多内容 API 都模仿了旧版 Hibernate 条件 API。