当一个字段被声明为 Collection 但被初始化为具体类型时,javers 会抱怨
javers complains when a field is declared as Collection but initialized as concrete type
使用 javers 1.4.1.
我在 POJO 中有一个字段声明如下:
private Collection<String> names;
然后用一个具体的实例初始化 Collection
class 像这样:
names = new ArrayList<>();
当我 运行 对此 class 进行测试时,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 中。 and/or 我需要做哪些调整才能让 javers 开心?
原因是,JaVers 必须(静态地)知道它是列表还是集合。没有这些信息,JaVers 就不知道如何比较两个集合。所以你必须改变你的POJO。
这个错误消息有点误导,这里有一个问题 https://github.com/javers/javers/issues/353
我希望是 High-level Collection interface is not supported, try at least Set or List
使用 javers 1.4.1.
我在 POJO 中有一个字段声明如下:
private Collection<String> names;
然后用一个具体的实例初始化 Collection
class 像这样:
names = new ArrayList<>();
当我 运行 对此 class 进行测试时,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 中。 and/or 我需要做哪些调整才能让 javers 开心?
原因是,JaVers 必须(静态地)知道它是列表还是集合。没有这些信息,JaVers 就不知道如何比较两个集合。所以你必须改变你的POJO。
这个错误消息有点误导,这里有一个问题 https://github.com/javers/javers/issues/353
我希望是 High-level Collection interface is not supported, try at least Set or List