如何让 Javers 按字段值而不是 ID/object 参考进行比较
How to make Javers compare by field values rather than ID/object reference
我有一个像这样的对象:
class Person {
Phone phone;
}
class Phone {
String number;
String prefix;
Phone(String n, String p) {
number = n;
prefix = p;
}
}
Now consider this code:
Person p = new Person();
p.phone = new Phone("444444", "01");
javers.commit(p);
p.phone = new Phone("555555", "01");
javers.commit(p);
在这种情况下,可以看到 Phone
的引用已更改。虽然这是很好的信息,但我并不真正关心它。我只想知道 number
字段的值何时发生变化,这正是我正在跟踪的内容。
我将如何实现?我尝试将 Phone class 定义为 ValueObject,但它似乎没有完成工作,我仍然将其作为参考更改而不是结果 Commit
快照中的值更改。我应该将其注册为值吗?
Map Phone as ValueObject 或让 JaVers 应用默认映射,这也是 ValueObject 对象。 ValueObject 总是通过 属性 与 属性 进行比较,从不通过引用进行比较。它似乎没有完成任务是什么意思?
我有一个像这样的对象:
class Person {
Phone phone;
}
class Phone {
String number;
String prefix;
Phone(String n, String p) {
number = n;
prefix = p;
}
}
Now consider this code:
Person p = new Person();
p.phone = new Phone("444444", "01");
javers.commit(p);
p.phone = new Phone("555555", "01");
javers.commit(p);
在这种情况下,可以看到 Phone
的引用已更改。虽然这是很好的信息,但我并不真正关心它。我只想知道 number
字段的值何时发生变化,这正是我正在跟踪的内容。
我将如何实现?我尝试将 Phone class 定义为 ValueObject,但它似乎没有完成工作,我仍然将其作为参考更改而不是结果 Commit
快照中的值更改。我应该将其注册为值吗?
Map Phone as ValueObject 或让 JaVers 应用默认映射,这也是 ValueObject 对象。 ValueObject 总是通过 属性 与 属性 进行比较,从不通过引用进行比较。它似乎没有完成任务是什么意思?