MapStruct Карта целевых полей по значению исходного поля - PullRequest
0 голосов
/ 12 ноября 2018

Мой исходный объект имеет этот формат

public class Source

{
    private SourceParm parm;

    //GETTERS and SETTERS

}

и SourceParm - это самоссылающийся объект, подобный этому

public class SourceParm

{
    private List<SourceParm> parm;

    private List<String> value;

    private String name;

    private String type;

//GETTERS and SETTERS

}

Теперь давайте предположим, что целевой класс имеет этот формат

public class Target {

   String type;
   String channelType;
   String externalTxnId;
   String correlationId;
}

Теперь, если мне нужно сопоставить целевые поля, мне нужно написать код, подобный этому

Target target=new Target();
if(SourceParm.getName().equals("channelType")){
  target.setChannelType(SourceParm.getValue())
}

Также для какого-то целевого значения мне придется перебирать список SourceParm, как показано ниже

for(SourceParm sourceParm : sourceParm.getSourceParms()){

   if(sourceParm.getName().equals("externalTxnId")){
      target.setExternalTxnId(SourceParm.getValue())
    }

  }

Как мне добиться этого с помощью MapStruct? Я не вижу простого способа сделать это, так как в итоге я написал много стандартных методов

...