【问题标题】:Hibernate Envers - show differences between revisionsHibernate Envers - 显示版本之间的差异
【发布时间】:2016-08-11 10:07:19
【问题描述】:

跟进这三个主题:

  1. Getting the old value and new value between two revisions with Hibernate Envers
  2. Diff on hibernate envers revisions
  3. Hibernate Envers : How to check if a field has changed between two revisions?

我正在寻找一种解决方案来比较和显示两个实体修订版之间的差异(添加/编辑/删除的内容)。

假设我有如下实体:

@Entity
@Table(name = "MAIN_ENTITY")
@Audited
public class MainEntity implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "ID")
    private Long id;

    @Column(name = "NAME")
    private String name;

    @Column(name = "SHORT_NAME")
    private String shortName;

    @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY, optional = false)
    @JoinColumn(name = "MAIN_ENTITY_COUNTER_ID")
    private MainEntityCounter mainEntityCounter;

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "mainEntity", fetch = FetchType.LAZY, orphanRemoval = true)
    @JsonManagedReference
    @OrderBy
    private Set<Tag> tags = new HashSet<Tag>();

    // getters and setters ...
}

如您所见,我将 MainEntity(也包括 MainEntityCounter 和 Tag)添加到审计表中,因此我正在跟踪这些对象的历史记录。 我发现了如何从数据库中获取特定版本的对象状态:

    AuditReader reader = AuditReaderFactory.get(em);
    MainEntity mainEntityStart = reader.find(MainEntity.class, mainEntityId, startRevision.intValue());

    MainEntity mainEntityEnd = reader.find(MainEntity.class, mainEntityId, endRevision.intValue());

但是我不知道比较对象mainEntityStartmainEntityEnd 的最佳解决方案/方法是什么。

我考虑过将 Java 对象转换为 JSON 对象(或任何其他类型的树结构),但我不确定这是否是个好方法。

  1. 您知道 Hibernate Envers 是否提供 API 来显示对象之间的差异?
  2. 您知道查看差异的最佳方法是什么吗?

感谢您的帮助。

【问题讨论】:

    标签: hibernate tree compare difference hibernate-envers


    【解决方案1】:

    从功能的角度来看,HHH-8058 问题可能涵盖了您所询问的内容。

    我强烈建议您和其他人随意投票,就您希望如何查看最适合您的用例的 API 设计提供任何意见,等等。

    【讨论】:

    • 通过上述问题,您只能获得更新的实体。但我也需要在修订中修改内容。我该如何做到这一点?
    猜你喜欢
    • 2015-08-08
    • 2015-12-13
    • 2012-12-07
    • 2011-06-24
    • 1970-01-01
    • 2012-07-13
    • 1970-01-01
    • 2012-11-20
    • 1970-01-01
    相关资源
    最近更新 更多