Map list of lists with Dozer

允我心安 提交于 2019-12-11 01:48:34

问题


i have an Object like this:

public class Elem
{
    private List<List<String>> elements;

    public List<List<String>> getElements()
    {
        return elements;
    }

    public void setElements(List<List<String>> elements)
    {
        this.elements = elements;
    }
}
  • of course it has also an empty ctor, hashcode and equals.

i would like to deep copy this object.

i used dozer for that. like:

DozerBeanMapper beanMapper = new DozerBeanMapper();
Elem dst = beanMapper.map(src, Elem.class)

however i get an error:

java.lang.ClassCastException: sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl cannot be cast to java.lang.Class
    at org.dozer.util.ReflectionUtils.determineGenericsType(ReflectionUtils.java:364)
    at org.dozer.util.ReflectionUtils.determineGenericsType(ReflectionUtils.java:352)
    at org.dozer.propertydescriptor.GetterSetterPropertyDescriptor.genericType(GetterSetterPropertyDescriptor.java:335)
    at org.dozer.fieldmap.FieldMap.getGenericType(FieldMap.java:145)
    at org.dozer.MappingProcessor.mapCollection(MappingProcessor.java:493)
    at org.dozer.MappingProcessor.mapOrRecurseObject(MappingProcessor.java:422)
    at org.dozer.MappingProcessor.mapFromFieldMap(MappingProcessor.java:330)
    at org.dozer.MappingProcessor.mapField(MappingProcessor.java:276)
    at org.dozer.MappingProcessor.map(MappingProcessor.java:245)
    at org.dozer.MappingProcessor.map(MappingProcessor.java:187)
    at org.dozer.MappingProcessor.map(MappingProcessor.java:124)
    at org.dozer.MappingProcessor.map(MappingProcessor.java:119)
    at org.dozer.DozerBeanMapper.map(DozerBeanMapper.java:111)

Can someone please explain why Dozer have problems with list of lists and maybe how can i sort this out?


回答1:


as @artbristol commented, this indeed is an issue in sourceforge dozer. i looked this issue in github dozer, althouge it is not listed in the issues it is not working there as well.

currently my fix is to set this field to null before mapping, then map this field by my self and set both variables with the corresponding fields.

i will open an issue for that on the github project and will try to contribute a fix.



来源:https://stackoverflow.com/questions/19537549/map-list-of-lists-with-dozer

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!