使用Hibernate Envers,您可以创建一个相应的审核表,后缀为" _AUD"对于每个JPA实体,然后您可以使用AuditReader
进行查询。
此AuditReader假定实体的ID为 id ,并且它具有 getId() getter。就我而言,我的所有实体都有不同的名称标识符,如 userId 和 accountId 等...所有数据类型都不同。
如何创建一个模式来减少样板代码,以便在不知道id的fieldName的情况下通过id检索审计历史数据?
答案 0 :(得分:0)
这就是AuditEntity.id()
的用途:)
AuditQuery query = getAuditReader()
.forRevisionsOfEntity( MyEntity.class. true, false )
.add( AuditEntity.id().eq( myEntityClassId ) );
您不应该知道属性映射到您实体的标识符属性,因为Envers将处理类型之间所有必要的相等/不等式检查以及幕后的属性映射
答案 1 :(得分:0)
怎么样?
getAuditReader().createQuery().forRevisionsOfEntity(MyEntity.class, false, false).add( AuditEntity.property("accountId").eq(12));