1

使用 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<>();

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

private List<String> names;

我是 javers 的新手,它是由其他人介绍给项目的。但是我所做的只是将这个新字段添加到现有的 POJO 中。我需要查看和/或调整什么才能让javers开心?

4

1 回答 1

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

于 2016-04-05T13:21:42.900 回答