2016-08-11 9 views
3

間のショーの違い:私は(違いを比較し、表示するソリューションを探しています休止Envers - これらの3つのトピックによってフォローアップの改正

  1. Getting the old value and new value between two revisions with Hibernate Envers
  2. Diff on hibernate envers revisions
  3. 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()); 

私はオブジェクトmainEntityStartmainEntityEndを比較するための最善のソリューション/アプローチが何であるか見当がつかないが。

JavaオブジェクトからJSONオブジェクト(または他の種類のツリー構造)への変換については考えましたが、それが良いアプローチになるかどうかはわかりません。

  1. オブジェクト間の違いを表示するAPIがHibernate Enversで提供されているかどうか知っていますか?
  2. 違いを確認する最良の方法は何ですか。

ありがとうございました。

答えて

1

機能面では、お問い合わせの内容はおそらくHHH-8058に記載されています。

私は強くなど、あなたのユースケースのために最善に働くように設計APIを見てみたいと思いますどのように上の任意の入力を提供し、あなたや他の人が投票気軽にすることをお勧めします

関連する問題