В настоящее время мы используем JaVers 3.0.0. Предположим, что мы имеем следующие две сущности A и B. И A отслеживает некоторые Bs в списке.Наблюдать удаленные объекты в списках
@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;
}
}
И вот наш довольно простой класс B.
@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:
- Commit объект с пустым списком
- Commit объект с двумя добавленными Bs
- Объект с одним удаленным 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("f[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 является сущностью и имеет идентификатор. Что мне не хватает?
Редактировать Спасибо, что ответили на комментарии. Возможно, я недостаточно детально. Извини за это.
То, что я пытаюсь запросить, это все изменения на A и все изменения на B. Я только совершаю A, но, возможно, это проблема? Должен ли я отслеживать A и B?
Но ни B не изменилось. Вы попробовали «A.class» вместо просто любопытства? Или используется B.setId? Тогда я уверен, что вы получите журналы изменений. – Fildor
@ Fildor Это правда, один B не изменился, но один был удален из списка A. Я думал, что смогу найти их таким образом. – raupach
"один B не изменился, но один был удален из списка A." то вам нужно запросить этот экземпляр A. Подсказка для вас должна заключаться в том, что вы только совершаете 'a' ... – Fildor