首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ModelMapper LinkedHashMap to LinkedHashMap ArrayIndexOutOfBoundsException

ModelMapper LinkedHashMap to LinkedHashMap ArrayIndexOutOfBoundsException
EN

Stack Overflow用户
提问于 2020-08-05 19:28:11
回答 1查看 471关注 0票数 0

我一直在从事一个项目,其中一些新的状态数据被提取到一个对象中,并通过ModelMapper对当前的对象状态数据进行应用。字段被匹配并自动更新,这是很好的。

现在,我以List>的形式添加了一些更复杂的数据。

一切都在破裂。

以下是简化的代码:

代码语言:javascript
复制
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>  m1 = new LinkedHashMap();
        m1.put("test1","machin");
        m1.put("test2","truc");
        m1.put("test3","bidule");
        
        Map<String, String>  m2 = new LinkedHashMap();
        m2.put("test1","machin");
        m2.put("test2","truc");
        
        List<Map<String, String>> l1 = new ArrayList<Map<String, String>>();        
        l1.add(m1);
        
        List<Map<String, String>> l2 = new ArrayList<Map<String, String>>();        
        l2.add(m2);
        
        typeA.setListOfMap(l1);     
        typeB.setListOfMap(l2);   // 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时,我们会得到以下错误:

代码语言:javascript
复制
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映射List>类型正确吗?

thx全

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-06 09:04:41

当时,我正在使用modelmapper依赖性版本2.3.8运行这段代码。

更新到最新版本2.4.2解决了这个问题。

代码语言:javascript
复制
    ModelMapper modelmapper = new ModelMapper();
        
    try {
        System.out.println(typeB.getListOfMap().toString());
        modelmapper.map(typeA, typeB); 
        System.out.println(typeB.getListOfMap().toString());
    } catch (Exception e) {
        e.printStackTrace();
    }

如预期的那样:

代码语言:javascript
复制
[{test1=machin, test2=truc}]  
[{test1=machin, test2=truc, test3=bidule}]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63272283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档