bon*_*ade 5 tree hibernate compare hibernate-envers difference
跟进这三个主题:
我正在寻找一种解决方案来比较和显示两个实体修订版之间的差异(添加/编辑/删除的内容)。
假设我有如下实体:
@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 ...
}
Run Code Online (Sandbox Code Playgroud)
如您所见,我将 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());
Run Code Online (Sandbox Code Playgroud)
但是,我不知道比较对象mainEntityStart和mainEntityEnd.
我考虑过将 Java 对象转换为 JSON 对象(或任何其他类型的树结构),但我不确定这是否是一种好方法。
谢谢你的帮助。
| 归档时间: |
|
| 查看次数: |
1926 次 |
| 最近记录: |