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

推土机UUID映射

万俟震博
2023-03-14

我试图使用Dozer映射UUID字段,遇到了Dozer github上提到的一个问题:

https://github.com/DozerMapper/dozer/issues/83

问题是-显然,Dozer依赖于UUID中不存在的默认无参数构造函数。因此,该链接显示了如何告知推土机执行参考复制。然而,使用该提示并没有帮助,我仍然会遇到以下异常:

org.dozer.java.lang.java.util.UUID

测试失败表明:

@Test
public void testUUIDMapping() {
    UUID source = fakeUUID1;

    UUID result = mapper.map(source, UUID.class);

    Assert.assertEquals(result, source);
}

最后,根据问题中的提示,映射是这样的:

<configuration>
    <copy-by-references>
        <copy-by-reference>java.util.UUID</copy-by-reference>
    </copy-by-references>
</configuration>

你知道我可能做错了什么吗?谢谢

共有1个答案

芮学
2023-03-14

您正在使用映射器从一个UUID映射到另一个UUID?您是否应该测试是否可以将UUID从类a映射到类B?当您直接映射UUID时,dozer将反射性地检查UUID内的字段,并尝试将它们从一个字段复制到另一个字段。

换句话说,我不认为这个测试是有效的。这个测试对我来说通过了(它需要你添加的配置):

@Test
public void whenMappingAUuidThenItGetsCopiedByReference() {
    ClassWithUuid a = new ClassWithUuid();
    UUID uuid = UUID.randomUUID();
    a.setUuid(uuid);

    Mapper mapper = new Mapper();
    ClassWithUuid b = //map to b
    assertEquals(uuid, b.getUuid());
}

public static class ClassWithUuid {
    private UUID uuid;

    public UUID getUuid() {
        return uuid;
    }

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

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

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

  • 我在srcopobject中收集了StateTax和LocalTax。这需要映射到StateLocalTax的集合。在SrcObject中,如果我有三个SrcStateTax和两个SrcLocalTax,我想将它们映射到一个StateLocalTax集合,该集合将有四个元素。此集合的三个元素将包含stateTax信息和null destLocalTaxGroup,一个元素将包含destLocalT

  • 我公开了一个使用另一个SOAP服务的服务。我得到了JAXB生成的服务模型。当我使用服务时,数据被设置到与此模型相关的对象中。我定义了自己的域模型,它与JAXB模型具有完全相同的类集,但没有xml注释等。我使用dozer来执行数据映射。当标记为注释(nillable=true)的某些布尔元素为null时,我的域模型中的目标对象布尔对象将设置为默认的true或false值。我希望它保留相同的空值。布尔

  • 所以,我有一个问题,这里的人可能会帮助我与推土机。 背景:我设置了Dozer来将我的持久性实体映射到它们的DTO类。这很简单,我只是创建一个实体类的精确副本作为POJO,并允许dozer通配符查看字段的名称是否与源字段匹配。我正在使用自定义映射器处理Hibernate延迟加载问题,就像这里所做的那样。我告诉Dozer如何通过一个类来映射每个类,该类扫描实体中名为@EntityMap(DTOxxx.