有两个类。其中之一具有FunctionalInterface
类型的字段。我需要将nameA
的字段ClassA
映射到base
的{{1}}。我可以使用自定义映射器来实现它,但是随后在MapperFacade中将没有字段名称映射(例如,fieldsMapping集合中的“ nameA” <->“ base”),但是在其他方法中需要进一步的数学运算。如果我使用字段名称映射它们,则会得到一个异常,即java无法将String映射到CustomFunctionalInterface。
是否有解决方法(将ClassB
映射到nameA
并在MapperFacade或MapperFactory中映射字段名称)?
base
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;
}
}
答案 0 :(得分:1)
我已经在orika文档中搜索了分辨率,但是没有找到与此问题相关的任何内容。我认为没有解决此问题的好方法。使用customMappers时,您无法使用所需的字段关系填充fieldsMapping。与转换器相似(在这种情况下)。我的解决方法:
...
.fieldMap("nameA", "base").bToA().exclude().add()
...
当您排除映射关系时,将在fieldsMapping中编写关系(但使用“ <-”关系而不是“ <->”)。就我而言,这种排除没有任何意义,但是在fieldMappind(或classMapping)中将存在关系