0

我正在尝试为某些类实现 CustomComparators。我遇到的第一个问题是如何在我的 CustomComparator 中返回多个 ValueChanges。当多个字段可能已更改时,我似乎只能在该对象上返回单个 ValueChange。此外,我不知道如何让 Javers 为在我的 CustomCommparator 覆盖的类中显示为字段的对象生成差异。下面的例子:

我在下面定义了以下类,其中我们有一个拥有商店的人,该商店有他们在那里出售的物品。

public class Person
   public Store store


public class Store
   public String name
   public Item item
   public String location

public class Item
  public String name

问题: 1. 如何为 Store 实现 CustomComparator 以便它创建两个 ValueChanges:一个用于名称,一个用于位置。2. 我如何使用相同的 CustomComparator 让 Javers 也对项目进行比较?谢谢!

4

1 回答 1

0

Shortly, you can't. The CustomPropertyComparator.compare() method returns PropertyChange which can be complex object (like ListChange) or any kind of object that extends PropertyChange. But still, PropertyChange describes a Change on exactly one Property.

Doing it javers-way means registering CustomValueComparator for each Value Type.

For example, if you have the Item class:

class Item {
    Price price
    Characteristics Characteristics 
}

Register custom comparators for each atomic Value Type:

javersBuilder
    .registerValue(Price.class, (a,b) -> a.compareTo(b) == 0)
    .registerValue(Characteristics.class, (a,b) -> a.compareTo(b) == 0)
于 2017-07-13T21:03:40.720 回答