Привет, я новичок в Javers.
У меня есть сущность, для которой я реализую пользовательский компаратор для сравнения с использованием Javers.
Моя сущность: -
пакет com.devyansh.entity;
импортировать java.util.List;
импортировать org.javers.core.metamodel.annotation.Entity;
@Entity
public class Ent {
String value;
List<String> values;
public Ent(String value, List<String> values) {
super();
this.value = value;
this.values = values;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public List<String> getValues() {
return values;
}
public void setValues(List<String> values) {
this.values = values;
}
}
Ниже я регистрирую новый компаратор: -
public void comp(){
Javers javers = JaversBuilder.javers().registerCustomComparator(new FunnyStringComparator(), Ent.class).build();
Diff diff = javers.compare(new Ent("aaa", new ArrayList<String>()), new Ent("aaa",new ArrayList<String>()));
System.out.println(diff.getChanges());
}
Моя реализация компаратора: -
package com.devyansh.javers;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import com.devyansh.entity.Ent;
import com.google.common.collect.Sets;
import org.javers.core.diff.changetype.PropertyChangeMetadata;
import org.javers.core.diff.changetype.container.ContainerElementChange;
import org.javers.core.diff.changetype.container.SetChange;
import org.javers.core.diff.changetype.container.ValueAdded;
import org.javers.core.diff.changetype.container.ValueRemoved;
import org.javers.core.diff.custom.CustomPropertyComparator;
import org.javers.core.metamodel.property.Property;
public class FunnyStringComparator implements CustomPropertyComparator<Ent, SetChange> {
@Override
public Optional<SetChange> compare(Ent left, Ent right, PropertyChangeMetadata metadata,
Property property) {
// TODO Auto-generated method stub
System.out.println("Hello!!!!!");
return null ;
}
@Override
public boolean equals(Ent a, Ent b) {
// TODO Auto-generated method stub
return false;
}
}
ПРОБЛЕМНАЯ ОБЛАСТЬ: -
КОГДА Я ПЫТАЮСЬ СРАВНИТЬ, ИСПОЛЬЗУЯ НИЖЕ ЛИНИЮ: -
Diff diff = javers.compare(new Ent("aaa", new ArrayList()), new Ent("aaa", new ArrayList()));
Я получаю следующую ошибку: -
MANAGED_CLASS_MAPPING_ERROR: данный javaClass 'class com.devyansh.entity.Ent' сопоставляется с CustomType, ожидаемым ManagedType
Может кто-нибудь, пожалуйста, дайте мне знать, что я делаю неправильно??? Я попытался отладить API Javers, ниже функция называется: -
JaversType get(Type javaType) {
return mappedTypes.get(javaType.toString());
}
здесь mappedTypes — это concurrentHashMap, и он повторяет customType для пользовательских сущностей?
Как мы можем это решить?