Добавить автоматический префикс, сопоставляя имена полей

Я использую Orika Mapper и имею следующее:

mapperFactory.classMap(BusinessResource.class, BusinessDto.class)
                .field("content._id", "_id")
                .field("content.uuid", "uuid")
                .field("content.created", "created")
                .field("content.name", "name")
                .field("content.phone", "phone")
                .field("content.fax", "fax")
                .field("content.email", "email")
                .field("content.address", "address")
                .field("content.coordinates", "coordinates")...

Почему я должен использовать это таким образом? Из-за BusinessResoruce:

public class BusinessResource extends Resource<Business> {
   private Business content;
   private Link[] links;
}

Можно ли сделать какой-то автоматический префикс путем сопоставления, которое добавит content.каждому fieldметод?

заранее спасибо

ОБНОВЛЕНИЕ № 1: Пытался использовать DefaultFieldMapper и удалил все ручные сопоставления - без успеха, но объект Links по умолчанию сопоставлен без каких-либо проблем. Основная проблема с этим решением:

suggestMappedField(String fromProperty, Type<?> fromPropertyType)

получает свойства BusinessResource которые content а также linksи поэтому полученный объект, если пустой

1 ответ

Orika предоставляет способ дать подсказку о том, как сделать автоматическое сопоставление: DefaultFieldMapper

Вы можете использовать его на уровнях карты классов или даже зарегистрировать средство отображения полей по умолчанию в глобальном масштабе.

Вот пример:

DefaultFieldMapper myHint = new DefaultFieldMapper() {
public String suggestMappedField(String fromProperty, Type<?> fromPropertyType) {
  return "content." + fromProperty;
}};

Вы можете создать по умолчанию

factory.registerDefaultFieldMapper(myHint);
// OR factory.classMap() ... .byDefault(myHint);
Другие вопросы по тегам