【问题标题】:Dozer enum to enum mapping推土机枚举到枚举映射
【发布时间】:2013-11-11 09:50:40
【问题描述】:

为什么这不适用于 Dozer?我必须做些什么才能让它发生?我们有大量的枚举,有时我们只需要在它们之间进行映射。有什么方法可以配置推土机来做到这一点而无需编写自定义内容?

enum EnumOne{ TEST1, TEST2 }
enum EnumTwo{ TEST1, TEST2 }

Mapper dozerMapper;

dozerMapper.map(EnumOne.TEST1, EnumTwo.class);

【问题讨论】:

  • 你解决了吗?如果是这样,你能提供你的解决方案吗?我遇到了同样的问题。当枚举作为更大 POJO 的一部分映射时,它们的映射很好,但如果我只想单独映射枚举,它就行不通。
  • 不,最终为枚举编写了一个自定义映射器。我们的映射器在内部有一个推土机映射器,现在它们派生自一个可以按名称映射枚举的基类。

标签: java dozer


【解决方案1】:

它不起作用,因为 Dozer 依赖于公共构造函数的存在,这对于枚举是非法的。当您尝试映射它们时,您可以从异常中推断出这一点:

Exception in thread "main" org.dozer.MappingException: 
java.lang.NoSuchMethodException: DestinationEnum.< init >()

它正在寻找一个不存在的构造函数。

除了如 black666 所说的那样,没有办法绕过它,它是更大 POJO 的一部分。这就是它在documentation 中的显示方式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-14
    • 2017-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多