当前位置: 首页 > 知识库问答 >
问题:

推土机将类字段嵌套到平面地图。使用推土机API进行类映射

胡景焕
2023-03-14

我想让推土机地图成为我的职业:

public class A {
  private B someB;
  private String someAText;
}

public class B {
  private String someBText;
}

到生成的Map.class,如下所示:

"someAText" => "someATextValue"
"someBText" => "someBTextValue"

.

也就是说,我正在尝试将嵌套类的字段映射到平面Map键目标。我使用的是JavaAPI的Dozer,而不是xml。我无法找到适当的构建器配置来管理它。基本代码类似于:

beanMappingBuilder = new BeanMappingBuilder() {
  @Override
  protected void configure() {
    mapping(B.class, Map.class, TypeMappingOptions.oneWay(), mapNull(true));
    mapping(A.class, Map.class, TypeMappingOptions.oneWay(), mapNull(true));
  }
 }

共有1个答案

令狐宏浚
2023-03-14

我建议您尝试以下配置

beanMappingBuilder = new BeanMappingBuilder() {

  @Override
  protected void configure() {
    // 'A > Map' mapping
    mapping(A.class, Map.class, TypeMappingOptions.oneWay(), TypeMappingOptions.mapNull(true))
      .fields("someAText", "someATextValue")
      .fields("someB.someBText", "someBTextValue");

    // 'B > Map' mapping
    mapping(B.class, Map.class, TypeMappingOptions.oneWay(), TypeMappingOptions.mapNull(true))
      .fields("someBText", "someBTextValue");
  }
}
 类似资料:
  • 我有一个类,我们用一个映射字段将其称为a,它被转换为B类,用于数据库存储/检索,其中该字段映射到字符串。从A到B的映射非常有效。然而,当从B到A时,我得到了一个IllegalArgument异常,它表示无法将字符串转换为映射。让我困惑的是,Dozer的文档中说,这确实适用于以下情况: 数据类型转换由Dozer映射引擎自动执行。目前,Dozer支持以下类型的转换:(这些都是双向的) 然后它继续列出要

  • 我试图使用Dozer映射UUID字段,遇到了Dozer github上提到的一个问题: https://github.com/DozerMapper/dozer/issues/83 问题是-显然,Dozer依赖于UUID中不存在的默认无参数构造函数。因此,该链接显示了如何告知推土机执行参考复制。然而,使用该提示并没有帮助,我仍然会遇到以下异常: org.dozer.java.lang.java.u

  • 在Dozer的帮助下,我想将映射到DTO类 但是这两种设置

  • 我在Spring启动时使用推土机映射器。如果我将数据从实体映射到EntityDTO,那么dozer maper的工作就是将数据从实体类复制到EntityDTO,对于原语也是如此。但是假设我有这样一门课 和名称为EntityDTO的DTO 那么它不会将数据从entityChild映射到EntityChildTos,有人能帮我解决这个问题吗?

  • 我是使用dozer的新手。我需要将集合映射到一个类,该类是集合中源类的属性。我有如下类技术 我想映射到 哪里 我的推土机绘图将是什么样子?

  • 考虑以下类。如何在不使用自定义转换器的情况下使用Dozer将A类转换为B类? 有人能为上述类提供推土机映射XML吗?