跟进这三个主题:
我正在寻找一种解决方案来比较和显示两个实体修订版之间的差异(添加/编辑/删除的内容)。
假设我有以下实体:
@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());
但是我不知道比较对象mainEntityStart
和mainEntityEnd
的最佳解决方案/方法是什么。
我考虑过将Java对象转换为JSON对象(或任何其他类型的树结构),但我不确定它是不是很好的方法。
感谢您的帮助。