问题:使用Java的ModelMapper映射具有不同名称的2个列表的问题。

huangapple go评论128阅读模式
英文:

Problems mapping 2 lists with different names using Java modelMapper

问题

我有4个类;

public class Class1
{
    private String id;
    private List<Class1a> class1aItems = null;

    ....
}

public class Class1a
{
    private String id;
    private String info;

    ....
}


public class Class2
{
    private String id;
    private List<Class2a> class2aItems = null;

    ...
}

public class Class2a
{
    private String id;
    private String info;

    ...
}

而且我不能给Class1和Class2的列表设置相同的名称

然后,我必须使用自动映射器将Class1映射到Class2,像这样:

TypeMap<Class1, Class2> typeMap = modelMapper.createTypeMap(Class1.class, Class2.class);
typeMap.addMapping(Class1::getClass1aItems, Class2::setClass2aItems);

Class2 class2 = modelMapper.map(class1, Class2.class);

对于主类来说它是有效的(Class1被映射到Class2),但是对于列表不起作用。在映射之前,Class2有一个空的class2aItems,而class1aItems在映射之前被填充了3个项目。

我做错了什么?

英文:

I have 4 classes;

public class Class1
{
	private String id;
	private List&lt;Class1a&gt; class1aItems = null;

    ....
}

public class Class1a
{
	private String id;
	private String info;

    ....
}


public class Class2
{
	private String id;
	private List&lt;Class2a&gt; class2aItems = null;

    ...
}

public class Class2a
{
	private String id;
	private String info;

    ...
}

and i can't set the same name to the lists in Class1 and Class2.

Then, i have to map Class1 into Class2 using automapper like this:

TypeMap&lt;Class1, Class2&gt; typeMap = modelMapper.createTypeMap(Class1.class, Class2.class);
        typeMap.addMapping(Class1::getClass1aItems, Class2::setClass2aItems);

        Class2 class2 = modelMapper.map(class1, Class2.class);

For the main classes it works (Class1 is mapped into Class2) except for the list. Class2 have an empty class2aItems while before the mapping class1aItems was populated with 3 items.

What am I doing wrong ?

答案1

得分: 1

尝试在你的目标类中实现 java.io.Serializable

public class Class2 implements Serializable
{
    private String id;
    private List<Class2a> class2aItems = null;

    ...
}

public class Class2a implements Serializable
{
    private String id;
    private String info;

    ...
}
英文:

Try implement java.io.Serializable in your destiny Class

public class Class2 implements Serializable
{
    private String id;
    private List&lt;Class2a&gt; class2aItems = null;

    ...
}

public class Class2a implements Serializable
{
    private String id;
    private String info;

    ...
}

huangapple
  • 本文由 发表于 2020年8月13日 00:16:43
  • 转载请务必保留本文链接:https://go.coder-hub.com/63380684.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定