Необходимо объединить два исходных объекта в целевой объект с помощью mapstruct, здесь одно поле в source1 имеет List, а в source2 - строку - PullRequest
0 голосов
/ 18 апреля 2019
public class Source1 {
    private String name;               //srihari  
    private List<String> city_names;   //city_names.add("hyderabad-india")
 }
public class Soruce2 {
    private String name;
    private String city_name;            //hyderabad-india
    private List<String> technologies;   //Arrays.asList("java","mapstruct")
 }
public class Target {
    private String name;            // Result: srihari 
    private String city_names;      // Result: hyderabad-india
    private String technologies;    // Result: java, mapstruct
}`

список имеет только одно значение означает list.size () = 1. Если имя источника1 пусто, оно должно быть взято из источника2. И цель должна содержать все поля, даже если они не доступны в одном источнике

1 Ответ

2 голосов
/ 21 апреля 2019

попробуй:

@Mapper
public interface MyMapper{

   // will map all other fields that you specify
   @Mapping( target = "city_names", ignore = true )
   @Mapping( target = "technologies", ignore = true )
   Target map(Source1 s1, Soruce2 s2);

   default map(Source1 s1, Soruce2 s2, @MappingTarget Target t) {
      // do whatever you like with city_names and technologies
   }


}
...