首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dozer UUID映射

Dozer UUID映射
EN

Stack Overflow用户
提问于 2013-12-05 18:15:46
回答 1查看 1.9K关注 0票数 1

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

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

问题是-很明显,Dozer依赖于一个默认的无参数构造函数,这在UUID中是不存在的。因此,该链接显示了如何告诉Dozer执行引用副本。然而,使用这个提示没有帮助,我仍然得到了这个异常:

org.dozer.MappingException: java.lang.NoSuchMethodException: java.util.UUID.()

测试失败的原因如下:

代码语言:javascript
复制
@Test
public void testUUIDMapping() {
    UUID source = fakeUUID1;

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

    Assert.assertEquals(result, source);
}

最后,按照问题中的提示,映射是这样的:

代码语言:javascript
复制
<configuration>
    <copy-by-references>
        <copy-by-reference>java.util.UUID</copy-by-reference>
    </copy-by-references>
</configuration>

对我可能做错了什么有什么想法吗?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-05 18:31:20

您使用映射器将UUID映射到另一个UUID?你不应该测试一下你可以把UUID从A类映射到B类吗?当您直接映射UUID时,dozer将反射地检查UUID中的字段,并尝试将它们从一个复制到另一个。

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

代码语言:javascript
复制
@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;
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20407597

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档