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

先感谢您

更新#1:尝试使用DefaultFieldMapper并删除所有手动映射 - 没有成功,但默认情况下映射 Links 对象没有任何问题。此解决方案的主要问题:

suggestMappedField(String fromProperty, Type<?> fromPropertyType)

接收的属性BusinessResourcecontentand links,这就是结果对象如果为空的原因。

4

1 回答 1

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);
于 2015-05-04T10:15:47.967 回答