Я работал над проектом, в котором некоторые новые данные о статусе загружаются в объект и применяются через ModelMapper к текущим данным статуса объекта. Поля сопоставляются и обновляются автоматически, что приятно.
Теперь я добавил более сложные данные в виде списка >. И что-то ломается.
Вот упрощенный код:
public class TypeA {
private List<Map<String, String>> listOfMap;
}
public class TypeB {
private List<Map<String, String>> listOfMap;
}
public class Test {
public static void main(String[] args) {
TypeA typeA = new TypeA();
TypeB typeB = new TypeB();
Map<String, String> map = new LinkedHashMap();
map.put("key1","value1");
map.put("key2","value2");
map.put("key3","value3");
List<Map<String, String>> list = new ArrayList<Map<String, String>>();
list.add(map);
typeA.setListOfMap(list);
typeB.setListOfMap(list); // this can be set to null to fix the problem
ModelMapper modelmapper = new ModelMapper();
try {
modelmapper.map(typeA, typeB);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Все работает нормально, если typeB listOfMap пуст. Но если у нас уже есть другой список значений в listOfMap для объекта typeB. Затем мы получаем следующую ошибку при попытке сопоставить A с B:
1) Converter org.modelmapper.internal.converter.MapConverter@1f32e575 failed to convert java.util.LinkedHashMap to java.util.LinkedHashMap.
1 error
at org.modelmapper.internal.Errors.throwMappingExceptionIfErrorsExist(Errors.java:380)
at org.modelmapper.internal.MappingEngineImpl.map(MappingEngineImpl.java:81)
at org.modelmapper.ModelMapper.mapInternal(ModelMapper.java:573)
at org.modelmapper.ModelMapper.map(ModelMapper.java:447)
at modelmapper_debug.Main.main(Main.java:30)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 1
at org.modelmapper.internal.converter.MapConverter.convert(MapConverter.java:59)
at org.modelmapper.internal.converter.MapConverter.convert(MapConverter.java:1)
at org.modelmapper.internal.MappingEngineImpl.convert(MappingEngineImpl.java:303)
at org.modelmapper.internal.MappingEngineImpl.map(MappingEngineImpl.java:110)
at org.modelmapper.internal.converter.MergingCollectionConverter.convert(MergingCollectionConverter.java:59)
at org.modelmapper.internal.converter.MergingCollectionConverter.convert(MergingCollectionConverter.java:1)
at org.modelmapper.internal.MappingEngineImpl.convert(MappingEngineImpl.java:303)
at org.modelmapper.internal.MappingEngineImpl.map(MappingEngineImpl.java:110)
at org.modelmapper.internal.MappingEngineImpl.setDestinationValue(MappingEngineImpl.java:242)
at org.modelmapper.internal.MappingEngineImpl.propertyMap(MappingEngineImpl.java:188)
at org.modelmapper.internal.MappingEngineImpl.typeMap(MappingEngineImpl.java:152)
at org.modelmapper.internal.MappingEngineImpl.map(MappingEngineImpl.java:115)
at org.modelmapper.internal.MappingEngineImpl.map(MappingEngineImpl.java:72)
... 3 more
Что здесь происходит? Могу ли я исправить этот код, чтобы сделать список карт ModelMapper > введите правильно?
спасибо всем