2015-04-30 5 views
0

Я использую 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 метод?

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

UPDATE # 1: Пытался использовать DefaultFieldMapper и удалить все ручные отображения - без успеха, но ссылка объекта отображается по умолчанию без каких-либо проблем. Основная проблема с этим решением:

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); 
+0

Не может сделать вашу работу решение .. Все поля пусты, но как только я добавить 'поле («content.id», «id») '- работает отлично .. – nKognito

+0

Можете ли вы обратное сопоставление: mapperFactory.classMap (BusinessDto.class, BusinessResource.class) .byDefault (myHint) .register() –

+0

Тот же результат .. все поля, кроме ссылок, являются нулями или пустыми. – nKognito

Смежные вопросы