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

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

Problems mapping 2 lists with different names using Java modelMapper

问题

我有4个类;

  1. public class Class1
  2. {
  3. private String id;
  4. private List<Class1a> class1aItems = null;
  5. ....
  6. }
  7. public class Class1a
  8. {
  9. private String id;
  10. private String info;
  11. ....
  12. }
  13. public class Class2
  14. {
  15. private String id;
  16. private List<Class2a> class2aItems = null;
  17. ...
  18. }
  19. public class Class2a
  20. {
  21. private String id;
  22. private String info;
  23. ...
  24. }

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

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

  1. TypeMap<Class1, Class2> typeMap = modelMapper.createTypeMap(Class1.class, Class2.class);
  2. typeMap.addMapping(Class1::getClass1aItems, Class2::setClass2aItems);
  3. Class2 class2 = modelMapper.map(class1, Class2.class);

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

我做错了什么?

英文:

I have 4 classes;

  1. public class Class1
  2. {
  3. private String id;
  4. private List&lt;Class1a&gt; class1aItems = null;
  5. ....
  6. }
  7. public class Class1a
  8. {
  9. private String id;
  10. private String info;
  11. ....
  12. }
  13. public class Class2
  14. {
  15. private String id;
  16. private List&lt;Class2a&gt; class2aItems = null;
  17. ...
  18. }
  19. public class Class2a
  20. {
  21. private String id;
  22. private String info;
  23. ...
  24. }

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:

  1. TypeMap&lt;Class1, Class2&gt; typeMap = modelMapper.createTypeMap(Class1.class, Class2.class);
  2. typeMap.addMapping(Class1::getClass1aItems, Class2::setClass2aItems);
  3. 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

  1. public class Class2 implements Serializable
  2. {
  3. private String id;
  4. private List<Class2a> class2aItems = null;
  5. ...
  6. }
  7. public class Class2a implements Serializable
  8. {
  9. private String id;
  10. private String info;
  11. ...
  12. }
英文:

Try implement java.io.Serializable in your destiny Class

  1. public class Class2 implements Serializable
  2. {
  3. private String id;
  4. private List&lt;Class2a&gt; class2aItems = null;
  5. ...
  6. }
  7. public class Class2a implements Serializable
  8. {
  9. private String id;
  10. private String info;
  11. ...
  12. }

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:

确定