4

我想将一些外部属性(不在我正在映射的对象中)添加到 MappingContext。

这是我想要完成的:

    MapperFactory mapperFactory = new DefaultMapperFactory.Builder().build();
    mapperFactory.classMap(ObjA.class, ObjB.class).customize(new CustomMapper<ObjA, ObjB>() {
        @Override
        public void mapAtoB(ObjA objA, ObjB objB, MappingContext context) {
            objB.setName((String) context.getProperty("name"));
        }
    }).byDefault().register();
    MapperFacade mapper = mapperFactory.getMapperFacade();

    ObjA objA = new ObjA();
    ObjB objB = new ObjB();

    MappingContext context = new MappingContext(); //PROBLEME IS HERE: MappingContext is a abstract class
    context.setProperty("name", "Some information not in objA nor in objB");
    mapper.map(objA, objB, context);

我怎样才能做到这一点?我可以动态地将数据添加到上下文中吗?还是将其他数据传递给映射器的另一种方式?

4

2 回答 2

9

解决方案很简单:

MappingContext context = new MappingContext.Factory().getContext();
context.setProperty("name", "value");
mapper.map(objA, objB, context);
于 2016-01-27T19:14:16.330 回答
0

我尝试了相同的方法,但是 mapper.map(classA,ClassB,newContext) 然后在传递上下文对象后我开始面临空指针异常。似乎在内部 Orika 开始期待层次结构中每个对象的 classMap。

有什么方法可以在我需要 A 到 B 映射的地方保持清洁。除非面临任何字段名称更改或需要任何自定义映射。请帮忙

于 2022-03-04T17:29:03.203 回答