Javers - 比较值为空的 ValueObjects 和具有空列表的对象

Javers - Comparison ValueObjects which are null and object with empty list

我有这样的class:

import lombok.Builder;
import lombok.Data;

import java.util.List;

@Data
@Builder
public class ValueObjectList {
    private List<DummyClass> dummyClassList;
}

并且在 class 的主要方法 2 对象中:

ValueObjectList valueObjectList1 = ValueObjectList.builder()
            .dummyClassList(new ArrayList<>())
            .build();

ValueObjectList valueObjectList2 = null;

我想比较 Javers 的此类对象。将 javers 的这些对象视为相同对象的最佳方法是什么?我是否必须为这种情况创建自己的比较器?也许我可以在 JaversBuilder 中设置这样的配置?

您可以使用自定义类型和 CustomPropertyComparator。请参阅 CustomType:

的 javadoc

自定义类型不好管理,不得已才用, 仅适用于比较自定义集合类型等极端情况。

JaVers 将自定义类型视为黑盒 并且不对其内容或行为做出任何假设。 它是一种“未建模”类型,有点类似于无限通配符 <?>

自定义类型的对象按 CustomPropertyComparator 进行比较。 注册此比较器是映射自定义类型的唯一方法。

使用 Gson 默认值将自定义类型序列化为 JSON。

JaversBuilder#registerCustomType(Class, CustomPropertyComparator)