如何使用自定义映射器映射字段并在 MapperFacade 或 MapperFactory 中保存字段名称映射?
How to map fields using custom mapper and save fields names mapping in MapperFacade or MapperFactory?
有两个类。其中之一具有 FunctionalInterface
类型的字段。我需要将字段 nameA
从 ClassA
映射到 base
从 ClassB
。我可以使用自定义映射器来实现它,但是我不会在 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)
有两个类。其中之一具有 FunctionalInterface
类型的字段。我需要将字段 nameA
从 ClassA
映射到 base
从 ClassB
。我可以使用自定义映射器来实现它,但是我不会在 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)