【问题标题】:How to map fields using custom mapper and save fields names mapping in MapperFacade or MapperFactory?如何使用自定义映射器映射字段并将字段名称映射保存在 MapperFacade 或 MapperFactory 中?
【发布时间】:2019-11-04 23:35:56
【问题描述】:

有两个类。其中之一具有FunctionalInterface 类型的字段。我需要将字段nameAClassA 映射到baseClassB。我可以使用自定义映射器来制作它,但是我不会在 MapperFacade 中映射字段名称(例如,fieldsMapping Collection 中的“nameA”“base”),但我需要它在其他方法中进行进一步的数学计算。如果我用字段名称映射它们,那么我会得到一个 java 无法将 String 映射到 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();
}

【问题讨论】:

    标签: java mapping orika


    【解决方案1】:

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

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

    当你排除映射关系时,会写在fieldsMapping中(但用“”)。在我的情况下,这种排除没有意义,但在 fieldMappind(或 classMapping)中将存在关系

    【讨论】:

      猜你喜欢
      • 2013-11-22
      • 2018-07-29
      • 2022-08-03
      • 1970-01-01
      • 1970-01-01
      • 2016-08-06
      • 1970-01-01
      • 2013-07-05
      • 2019-06-26
      相关资源
      最近更新 更多