Мой исходный объект имеет этот формат
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? Я не вижу простого способа сделать это, так как в итоге я написал много стандартных методов