【问题标题】:Auditing with Hibernate Envers: How to Query When ID is not 'id'使用 Hibernate Envers 进行审计:当 ID 不是 'id' 时如何查询
【发布时间】:2016-11-24 02:31:06
【问题描述】:

使用 Hibernate Envers,您可以为每个 JPA 实体创建一个后缀为“_AUD”的相应审计表,然后您可以使用AuditReader 进行查询。

此 AuditReader 假定实体的 ID 是 id 并且它具有 getId() getter。在我的例子中,我的所有实体都有不同命名的标识符,如 userIdaccountId 等......都有不同的数据类型。

如何创建一个模式来减少样板代码以在不知道 id 的 fieldName 的情况下按 id 检索审计历史数据?

【问题讨论】:

  • AuditReader 是如何假设实体的 ID 是 id 的?

标签: mysql spring hibernate jpa hibernate-envers


【解决方案1】:

这就是AuditEntity.id() 的用途:)

AuditQuery query = getAuditReader()
    .forRevisionsOfEntity( MyEntity.class. true, false )
    .add( AuditEntity.id().eq( myEntityClassId ) );

您不需要知道 property 映射到实体的标识符属性,因为 Envers 将在幕后处理类型和属性映射之间所有必要的相等/不相等检查。

【讨论】:

    【解决方案2】:

    怎么样?

    getAuditReader().createQuery().forRevisionsOfEntity(MyEntity.class, false, false).add( AuditEntity.property("accountId").eq(12));
    

    【讨论】:

      猜你喜欢
      • 2018-04-18
      • 2023-03-24
      • 2021-12-20
      • 2011-10-25
      • 1970-01-01
      • 1970-01-01
      • 2017-09-13
      • 1970-01-01
      • 2013-05-06
      相关资源
      最近更新 更多