間のショーの違い:私は(違いを比較し、表示するソリューションを探しています休止Envers - これらの3つのトピックによってフォローアップの改正
- Getting the old value and new value between two revisions with Hibernate Envers
- Diff on hibernate envers revisions
- Hibernate Envers : How to check if a field has changed between two revisions?
エンティティの2つのリビジョン間の追加/編集/削除)
私は以下のような実体を持っていると仮定しましょう:
@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と同様タグ)を追加するので、私はそれの歴史はオブジェクト追跡しています見ることができますのように。 私は特定のリビジョンのために、データベースからオブジェクトの状態を取得する方法を発見:
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オブジェクト(または他の種類のツリー構造)への変換については考えましたが、それが良いアプローチになるかどうかはわかりません。
- オブジェクト間の違いを表示するAPIがHibernate Enversで提供されているかどうか知っていますか?
- 違いを確認する最良の方法は何ですか。
ありがとうございました。