Учитывая набор из пяти объектов:
KeyDto{String id}
ValueDto{String name, String value, String description}
Key{String id, String name}
Value{String value, String description}
Target{Key key, Value value}
Я хотел бы создать картограф с двумя параметрами:
Target dtosToTarget(KeyDto keyDto, ValueDto valueDto);
Тем не менее, кажется, что определение только вспомогательных методов для Key и Value этого недостаточно:
@Mapping(source = "keyDto.id", target = "id")
@Mapping(source = "valueDto.name", target = "name")
Key keyDtoAndValueDtoToKey(KeyDto keyDto, ValueDto valueDto);
Value valueDtoToValue(ValueDto valueDto);
Это приводит к ошибке фактического метода dtosToTarget:
Ошибка: (17, 19) java: Невозможно отобразить свойство "java .lang.String value "to" mapping.Value value ". Подумайте о том, чтобы объявить / реализовать метод отображения: «mapping.Value map (java .lang.String value)».
Единственное решение, о котором я мог подумать - это определение пользовательских java выражений для вызова необходимых методы, такие как
@Mapping(target = "key", expression = "java(keyDtoAndValueDtoToKey(keyDto, valueDto))")
@Mapping(target = "value", expression = "java(valueDtoToValue(valueDto))")
Есть ли более чистый подход?