Я новичок в Mapstruct. У меня есть сценарий, в котором в моем целевом объекте у меня есть java-карта с парой ключевых значений ‹String, String›, и я должен заполнить эту карту, используя свойства внутренних объектов исходных объектов / значения элементов данных.
Мой код выглядит примерно так (фиктивный код):
public class Student {
public String name;
public String rollNo;
public Map<String, String> marks;
}
public class ExamResult{
public String stud_name;
public String Stud_rollNo;
public Marks marks;
}
public class Marks{
public Integer English;
public Integer Maths;
public Integer Science;
}
Как мне вручную добиться того же, что показано ниже:
Student target;
ExamResult source;
target.setName(source.stud_name);
target.setRollNo(source.Stud_RollNo);
target.marks.put("ENGLISH",source.marks.english_marks);
target.marks.put("MATHS",source.marks.math_marks);
target.marks.put("SCIENCE",source.marks.science_marks);
Для прямого сопоставления свойств я нашел код, но не знаю, как сопоставить значения, которые нужно заполнить на карте marks
.
Я подумал использовать выражение java для заполнения значений целевой карты, но не нашел никакой документации или такого примера выражений, используемых для целевого объекта.
Я думал использовать как показано ниже, но не уверен, что это сработает:
@Mapping(source = "stud_name", target = "name")
@Mapping(source = "Stud_RollNo", target = "rollNo")
@Mapping(source = "source.marks.english_marks",target = "java( marks.put(\"ENGLISH\",source.marks.english_marks )")
@Mapping(source = "source.marks.math_marks",target = "java( marks.put(\"MATHS\",source.marks.math_marks )")
@Mapping(source = "source.marks.science_marks",target = "java( marks.put(\"SCIENCE\",source.marks.science_marks )")
Student doConvert(ExamResult src)
Любая помощь, любое предложение или обходной путь приветствуются. Заранее спасибо.