gpt4 book ai didi

Hibernate Envers - 显示修订之间的差异

转载 作者:行者123 更新时间:2023-12-02 03:12:58 28 4
gpt4 key购买 nike

跟进这三个主题:

  • Getting the old value and new value between two revisions withHibernate Envers
  • Diff on hibernate envers revisions
  • Hibernate Envers : How to check if a field has changed between tworevisions?

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

    假设我有如下实体:
    @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 对象(或任何其他类型的树结构),但我不确定这是否是一种好方法。
  • 您知道 Hibernate Envers 是否提供 API 来显示对象之间的差异?
  • 您知道什么是查看差异的最佳方法吗?

  • 谢谢你的帮助。

    最佳答案

    从功能的角度来看,您要问的内容可能包含在 HHH-8058 中。问题。

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

    关于Hibernate Envers - 显示修订之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38893318/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com