【问题标题】:How to configure MapStruct to throw an exception when enum values can't be mapped无法映射枚举值时如何配置 MapStruct 以引发异常
【发布时间】:2021-06-22 01:05:26
【问题描述】:

这是我的映射器:

@Mapper
public interface ProductMapper {
    ProductClassification toProductClassification(ProductTypes pisType);
}

ProductTypesProductClassification 是枚举。我希望它在无法映射枚举时抛出异常,但出现编译器错误: The following constants from the source enum have no corresponding constant in the target enum and must be be mapped via adding additional mappings: EXTERNAL, UNKNOWN.

我尝试了@ValueMappings注解,但只能将其配置为将值设置为null,这是不够的:

@ValueMappings({
    @ValueMapping(source = MappingConstants.ANY_REMAINING, target = MappingConstants.NULL)
})

配置 MapStruct 映射器以在无法映射枚举常量时抛出异常的正确方法是什么?

【问题讨论】:

    标签: java enums mapstruct


    【解决方案1】:

    目前这是不可能的。

    但是,此功能将成为下一个 1.5 版本的一部分。它已经在 SNAPSHOT 版本中实现并可用。

    将有一个新的映射常量可通过MappingConstants.THROW_EXCEPTION 访问,您可以将其设置为ValueMappingTarget

    所以在这个例子中,为了给任何剩余的映射抛出异常,你可以编写:

    @ValueMapping(source = MappingConstants.ANY_REMAINING, target = MappingConstants.THROW_EXCEPTION)
    

    注意在回答此问题时 (29.03.2021),此功能尚未发布。

    【讨论】:

      猜你喜欢
      • 2020-11-04
      • 2017-09-07
      • 1970-01-01
      • 1970-01-01
      • 2013-08-12
      • 2021-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多