У меня есть интерфейс IConditionalOrder:
public interface IConditionalOrder
String getMessageWaiting();
a, который реализует интерфейс IConditionalOrder:
public class ConditionalOrderDTO implements IConditionalOrder
//new field
private String originalMessage;
@Override
public String getMessageWaiting()
return "some string";
public String getOriginalMessage()
return originalMessage;
другой dto "destination"
public class OrderDestination{
private String message;
//getter and setter
}
и Служба, в которой я выполняю сопоставление:
public class ConditionalOrderService{
public void doMapping(){
IConditionalOrder order = new ConditionalOrderDTO();
ModelMapper mapper= new ModelMapper();
mapper.map(order,OrderDestination.class);
}
}
Я получаю следующую ошибку:
org.modelmapper.ConfigurationException: ошибки конфигурации ModelMapper:
1) Свойство назначения com.persistence.adapter.OrderDestination.setMessage () соответствует нескольким иерархиям свойств источника:
com.persistence.adapter.model.ConditionalOrderDTO.getMessageWaiting () com.persistence.adapter.model.ConditionalOrderDTO.getOriginalMessage ()
Можно ли автоматически сопоставлять только значения интерфейса?(в этом случае Source: messageWaiting, Destination: message)
Я не понял, почему ModelMapper пытается сопоставить все значения реализации вместо использования только значений интерфейса.
Чтение документации. Я только что нашел способ избежать исключения
setAmbiguityIgnored (boolean ignore) Устанавливает, следует ли игнорировать свойства назначения, которые соответствуют более чем одному свойству источника.
давая мне возможность сделать пользовательское сопоставление.
Любая помощь очень ценится :)
С наилучшими пожеланиями Анджело