尝试为 class 扩展 HashMap 获取更改时出错
Error when trying to fetch changes for class extending HashMap
我正在尝试一个简单的测试,我尝试提交一个扩展 HashMap 的 Class 对象。我剩下一个 MANAGED_CLASS_MAPPING_ERROR: given javaClass 'class com.vehco.Configuration'
映射到 MapType,预期为 ManagedType。 Javers 不支持 is-a 而只支持 has-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;
}
}
这里的 Javers 类型推断似乎不明确。一方面,您的 class 扩展了 Map,因此 JaVers 可以将其推断为 MapType,另一方面,它具有 @Id 属性,因此 JaVers 可以将其推断为 Entity。我认为您必须决定哪种 Javers 类型更适合您的 class 并使用 JaversBuilder.register*()
显式注册此 class?
class 不能映射到多个 Javers 类型。
我正在尝试一个简单的测试,我尝试提交一个扩展 HashMap 的 Class 对象。我剩下一个 MANAGED_CLASS_MAPPING_ERROR: given javaClass 'class com.vehco.Configuration'
映射到 MapType,预期为 ManagedType。 Javers 不支持 is-a 而只支持 has-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;
}
}
这里的 Javers 类型推断似乎不明确。一方面,您的 class 扩展了 Map,因此 JaVers 可以将其推断为 MapType,另一方面,它具有 @Id 属性,因此 JaVers 可以将其推断为 Entity。我认为您必须决定哪种 Javers 类型更适合您的 class 并使用 JaversBuilder.register*()
显式注册此 class?
class 不能映射到多个 Javers 类型。