mapstruct 1.3 无法获取 Enum 作为第一个方法参数

mos2g

假设您有一个模型类,它只有一个 Enum 变量

public class MyModel {

  private MyEnum enum;
  //getter and setter

}

并且您想要一个映射器方法,该方法仅映射您的单个 Enum。

@Mapper(componentModel = "spring")
public interface MyCustomeMapper {

    @BeanMapping(ignoreByDefault = true)
    @Mapping(source = "enum", target = "enum")
    MyModel toMyModel(MyEnum enum);

}

但遗憾的是你得到了Can't generate mapping method from enum type to non-enum type错误,这不在这里。因为它们都是同一个枚举。(没有@valueMapping也不起作用)

显然这是mapstruct错误!

我的解决方案

这可能很愚蠢,但它有效。您需要做的就是添加另一个方法参数(如虚拟字符串)作为第一个方法参数,然后将您的 Enum 添加为第二个方法参数。你不需要映射你的虚拟字符串,让它在那里......

@Mapper(componentModel = "spring")
public interface MyCustomeMapper {

    @BeanMapping(ignoreByDefault = true)
    @Mapping(source = "enum", target = "enum")
    MyModel toMyModel(String dummy, MyEnum enum);

}

现在第一个方法参数不是 Enum 所以 mapstruct 不会给你带来任何问题。无论如何,如果有任何东西,我正在寻找更好的解决方案。

菲利普

此错误仅出现在 MapStruct 1.3 中。从 MapStruct 1.4 开始,支持将 Enum 源参数映射到 Bean 中的属性。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Java获取下一个Enum值或从第一个开始

MapStruct 3实体1 DTO

SslStream EndRead获取第一个1字节

获取服务中的第一个路线参数

无法通过MapStruct生成从Enum到Boolean的映射方法

如何在groupby中获取第一个值,TypeError:first()缺少1个必需的位置参数:“ offset”

获取第一个模板参数的可靠方法

MySQL仅获取3列之间的条件的第一个匹配项

矩阵N x N x 3,获取内部3数组的第一个元素

TypeError:未绑定方法strftime()必须以Form1的第38行的日期时间实例作为第一个参数(而不是got str实例)来调用

获取类的第一个模板参数

如果第一个2nd和3rd字段相同,如何使用Sort或另一个bash cmd从所有行中获取1行

获取第一个以空格分隔的宏参数

获取第一个通过的可变参数的地址

从参数获取先前的第一个值

在页面1中获取“无法读取null的属性'值'null”作为页面3中的ID

获取F#中Enum类型的第一个值

从列表中的3个元组中获取第一个和第二个元素-Haskell

TypeError:未绑定方法move_to_element()必须以ActionChains实例作为第一个参数来调用(取而代之的是获取列表实例)

无法打开文件作为第一个参数

如何检测<li>中的第一个nodeType是nodeType 1,然后是nodeType 3?

如何基于python中的第一个元素获取最大的3D矩阵

Ruby:如何获取枚举中第一个常量的值-1?

我无法使用ContextCompat对象调用getColor方法。它不会让我将getContext()作为第一个参数传递

连接 3 个表时获取所有第一个表记录的问题

无法从 xslt 获取 //account[1] 的第一个出现元素

Python3:可以使用“self”以外的方法作为方法的第一个参数吗?

如何从数组中获取最多 3 个第一个和最后一个项目

如何获取函数的第一个参数的类型?