尝试获取扩展HashMap的类的更改时出错

时间:2018-06-15 13:00:46

标签: javers

我正在尝试一个简单的测试,我尝试提交扩展HashMap的类的对象。我留下的MANAGED_CLASS_MAPPING_ERROR: given javaClass 'class com.vehco.Configuration'映射到MapType,预期ManagedType。 Javers不支持is-a但只有a-?

向前和向后阅读文档但无法找到任何内容。这次Google既不是我的朋友。

请找到下面的测试代码:

Tester.java:

public class Tester {

Javers javers = JaversBuilder.javers().build();

public static void main(String[] args) {
    Tester t = new Tester();
    t.start();
}

private void start() {
    Configuration data = new Configuration("global");
    for (Integer i = 0; i < 10; i++) {
        data.getProp().put(i.toString(), UUID.randomUUID().toString());
    }
    javers.commit("svenie",data);

    for (Integer i = 0; i < 10; i++) {
        if (i % 2 == 0)
            data.getProp().put(i.toString(), UUID.randomUUID().toString());
    }
    javers.commit("svenie",data);

    List<Shadow<Configuration>> changes = javers.findShadows(QueryBuilder.byClass(Configuration.class).build());
    for (Shadow<Configuration> change : changes) {
        System.out.println(change.getCommitMetadata());
    }
}
}

Configuration.java:

public class Configuration extends HashMap<String,String> {

@Id
private String name;

private Properties prop = new Properties();

public Configuration(String name) {
    this.name = name;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public Properties getProp() {
    return prop;
}
}

1 个答案:

答案 0 :(得分:0)

看起来Javers类型推断在这里是模棱两可的。一方面,您的类扩展了Map,以便JaVers可以将其推断为MapType,另一方面,它具有@Id属性,因此JaVers可以将其推断为Entity。我认为您必须确定哪种Javers类型更适合您的班级,并使用JaversBuilder.register*()明确注册该班级? 一个类不能映射到多个Javers类型。