現在、JaVers 3.0.0を使用しています。次の2つのエンティティAとBがあるとします.Aはリスト内のいくつかのBを追跡します。リスト内の削除されたオブジェクトを観察する
- は空のリストを持つオブジェクトをコミット
- オブジェクトをコミットします。
@Entity @TypeName("A") public class A { @Id private int id; private List<B> items; public A() { items = new ArrayList<>(); } public A(int id) { this(); this.id = id; } public int getId() { return id; } public void setId(int id) { this.id = id; } public List<B> getItems() { return items; } public void setItems(List<B> items) { this.items = items; } }
そして、ここでは
@Entity @TypeName("B") public class B { @Id private int id; public B() { } public B(int id) { this.id = id; } public int getId() { return id; } public void setId(int id) { this.id = id; } }
は、タイプAのオブジェクトに3つの変更をコミットすることができます私たちではなく、単純なクラスBです。 2つの追加されたBを持つ
- 1つのBが削除されたコミットオブジェクト 私はB. 上の変化を観察したいその後
は
Javers javers = JaversBuilder
.javers()
.build();
A a = new A(1);
javers.commit("[email protected]", a);
a.getItems().add(new B(1));
a.getItems().add(new B(2));
javers.commit("[email protected]", a);
a.getItems().remove(0);
javers.commit("[email protected]", a);
List<Change> changes = javers.findChanges(
QueryBuilder.byClass(B.class)
.build());
String changelog = javers.processChangeList(changes, new SimpleTextChangeLog());
System.out.println(changelog);
出力がゼロの変化を言います。私はBが実体であり、Idを持っているので、削除されたオブジェクトを見ることを期待していました。私は何が欠けていますか?
これまでのコメントにお返事ありがとうございます。たぶん私は十分な詳細されていなかった。申し訳ありません。
私が照会しようとしているのは、Aのすべての変更とBのすべての変更です。私はAのみをコミットしますが、それはおそらく問題ですか?私はAとBを追跡すべきですか?
commitShallowDelete()
を呼び出すことであるしかし、誰Bは変更されません。好奇心の代わりに 'A.class'を試しましたか?またはB.setIdを使用しましたか?私はあなたが変更ログを取得すると確信しています。 – Fildor@Fildorそれは本当ですが、単一のBは変更されませんでしたが、1つはAのリストから削除されました。 – raupach
"1つのBは変更されませんでしたが、1つはAのリストから削除されました。 Aのインスタンスを照会しなければなりません。ただ、 'a'をコミットするだけのヒントがあるはずです。... – Fildor