如何使用自定义映射器映射字段并在 MapperFacade 或 MapperFactory 中保存字段名称映射?

How to map fields using custom mapper and save fields names mapping in MapperFacade or MapperFactory?

有两个类。其中之一具有 FunctionalInterface 类型的字段。我需要将字段 nameAClassA 映射到 baseClassB。我可以使用自定义映射器来实现它,但是我不会在 MapperFacade 中映射字段名称(例如 fieldsMapping Collection 中的 "nameA" <-> "base"),但我需要它在其他方法中进行进一步的数学运算。如果我用字段名称映射它们,那么我会得到一个 java 无法将字符串映射到 CustomFunctionalInterface 的异常。 有什么方法可以解决它(将 nameA 映射到 base 并在 MapperFacade 或 MapperFactory 中映射字段名称)?

package project.my;

public class ClassA {
    String nameA;

    public String getNameA() {
        return nameA;
    }

    public void setNameA(String nameA) {
        this.nameA = nameA;
    }
}
package project.my;

public class ClassB {
    CustomFunctionalInterface base;

    public CustomFunctionalInterface getBase() {
        return base;
    }

    public void setBase(CustomFunctionalInterface base) {
        this.base = base;
    }
}
package project.my;

@FunctionalInterface
public interface CustomFunctionalInterface {
    String name();
}

我在 orika 文档中搜索了 resolution,但没有找到与此问题相关的任何内容。我认为没有好的方法可以解决这个问题。使用 customMappers,您无法使用所需的字段关系填充 fieldsMapping。类似于转换器(对于这种情况)。我的解决方法:

...
   .fieldMap("nameA", "base").bToA().exclude().add()
...

当您排除映射关系时,将写入fieldsMapping(但使用“<-”关系而不是“<->”)。在我的例子中,这种排除没有意义,但关系将存在于 fieldMappind(或 classMapping)