当一个字段被声明为Collection但初始化为具体类型时,javers会抱怨

时间:2016-04-04 19:06:29

标签: javers

使用javers 1.4.1。

我在POJO中有一个字段,声明如下:

private Collection<String> names;

然后使用这样的具体Collection类的实例进行初始化:

names = new ArrayList<>();

当我对这个类运行测试时,javers会抱怨以下错误:

JaversException: MANAGED_CLASS_MAPPING_ERROR given javaClass 'class java.util.ArrayList is mapped to java.util.ArrayList, expected ManagedType

如果我将其初始化为内联,则会出现同样的错误,例如:

private Collection<String> names = new ArrayList<>();

另一方面,如果我将该字段声明为List,那么javers很高兴:

private List<String> names;

我是javers的新手,它被其他人引入了该项目。但我所做的只是将这个新字段添加到现有的POJO中。我需要看什么和/或调整以使javers高兴?

1 个答案:

答案 0 :(得分:1)

原因是,JaVers必须(静态地)知道它是List还是Set。没有这些信息,JaVers不知道如何比较两个集合。所以你必须改变你的POJO。

此错误消息有点误导,这里存在问题https://github.com/javers/javers/issues/353

我希望High-level Collection interface is not supported, try at least Set or List

之类的东西