Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 映射时向Orika MappingContext添加外部数据_Java_Orika - Fatal编程技术网

Java 映射时向Orika MappingContext添加外部数据

Java 映射时向Orika MappingContext添加外部数据,java,orika,Java,Orika,我想向MappingContext添加一些外部属性(不在我映射的对象中) 以下是我想要实现的目标: MapperFactory mapperFactory = new DefaultMapperFactory.Builder().build(); mapperFactory.classMap(ObjA.class, ObjB.class).customize(new CustomMapper<ObjA, ObjB>() { @Override

我想向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);
MapperFactory MapperFactory=newdefaultmapperfactory.Builder().build();
classMap(ObjA.class,ObjB.class).customize(新的CustomMapper(){
@凌驾
public void mapAtoB(ObjA ObjA、ObjB ObjB、MappingContext上下文){
objB.setName((字符串)context.getProperty(“名称”);
}
}).byDefault().register();
MapperFacade mapper=mapperFactory.getMapperFacade();
ObjA ObjA=新ObjA();
ObjB ObjB=新ObjB();
MappingContext上下文=新的MappingContext()//问题在于:MappingContext是一个抽象类
setProperty(“名称”,“某些信息不在objA或objB中”);
map(objA,objB,context);

我该怎么做?我可以向上下文动态添加数据吗?还是将其他数据传递给mapper的另一种方法?

解决方案很简单:

MappingContext context = new MappingContext.Factory().getContext();
context.setProperty("name", "value");
mapper.map(objA, objB, context);

你刚刚发布的解决方案有什么问题?看起来是正确的方法。@AdamMichalik MappingContext是抽象的,无法实例化。我没有找到提取实际映射器上下文的方法,也没有找到使用MappingContextFactory构建新的映射器上下文的方法?似乎在处理完上下文后应该调用
release()