Чтобы обратное сопоставление работало, вам также необходимо указать обратный метод.
@Named("mapDiagnosisCodeAsList")
default List<Diagnosis> retrieveDiagnosisCodeAsList(List<String> aList) {
if (CollectionUtils.isEmpty(aList)) {
return new ArrayList<>();
}
return aList.stream().map(Diagnosis::new).collect(Collectors.toList());
}
Еще одна заметка. Я думаю, что вам действительно не нужна сложность квалификаторов, чтобы сделать эту работу. Если у вас есть только один Diagnosis
до String
и наоборот, вы можете сделать это без квалификаторов (даже без списка).
Ваш @Mapping
останется прежним без qualifiedByName
, и вам необходимо предоставить отображение от Diagnosis
до String
и обратно.
default String diagnosisToString(Diagnosis diagnosis) {
return diagnosis == null ? null : diagnosis.getDiagnosisCode();
}
default Diagnosis stringToDiagnosis(String diagnosisCode) {
return diagnosis == null ? null : new Diagnosis(diagnosisCode);
}
Создание коллекции будет осуществляться MapStruct. Также я предполагаю, что Diagnosis
имеет конструктор, который принимает код.