현재 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; } }
그리고 여기가
@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의 객체에 세 가지 변경 사항을 커밋 수 있습니다 우리가 아니라 간단한 클래스 B.이다 두 개의 추가 Bs가있는 경우
- 하나의 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는 변경되지 않았지만 하나는 A의 목록에서 삭제되었습니다. 나는이 방법으로 찾을 수 있다고 생각했습니다. – raupach
"단일 B는 변경되지 않았지만 하나는 A 목록에서 제거되었습니다." A의 인스턴스를 쿼리해야합니다. 당신이 오직'a'만을 커밋해야한다는 힌트가 있습니다 ... – Fildor