就这三个主题采取后续行动:
我正在寻找一个解决方案来比较和显示实体的两个版本之间的差异(添加/编辑/删除的内容)。
假设我有如下实体:
@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());
但是,我不知道比较对象main EntityStart
和main EntityEnd
的最佳解决方案/方法是什么。
我考虑过将Java对象转换为JSON对象(或任何其他类型的树结构),但我不确定这是否是好方法。
谢谢你的帮助。
从功能的角度来看,您所询问的内容可能包含在HHH-8058问题中。
我强烈建议你和其他人自由投票,就你希望如何看到最适合你用例的API设计提供任何意见,等等。