java - 无法映射枚举值时如何配置 MapStruct 以引发异常
问题描述
这是我的映射器:
@Mapper
public interface ProductMapper {
ProductClassification toProductClassification(ProductTypes pisType);
}
WhereProductTypes
和ProductClassification
are 枚举。我希望它在无法映射枚举时引发异常,但出现编译器错误:
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 映射器无法映射枚举常量时,将其配置为抛出异常的正确方法是什么?
解决方案
目前这是不可能的。
但是,此功能将成为下一个 1.5 版本的一部分。它已经在 SNAPSHOT 构建中实现并可用。
将有一个新的映射常量可通过它访问MappingConstants.THROW_EXCEPTION
,您可以将其设置为ValueMappingTarget
.
因此,在此示例中,为了对任何剩余的映射抛出异常,您可以编写:
@ValueMapping(source = MappingConstants.ANY_REMAINING, target = MappingConstants.THROW_EXCEPTION)
请注意,在回答此问题时 (29.03.2021),此功能尚未发布。
推荐阅读
- python - 如何将数据框转换为字典python
- python - Python:合并 'xlsxwriter' 中的 2 列
- python - 如何使用 Scrapy 和 Splash 获取动态页面的 html?
- javascript - Vue——等待 mapState 和可怕的 [__ob__: Observer]
- mongodb - 是否可以在 mongodb 中列出其值小于另一个字段 10% 的元素列表?
- firebase - 如何在有状态的小部件中使用键?
- eleventy - 在 Eleventy 中为页面的子级创建分页
- ios - 如何从 Swift 5.1 中的 UIFont 获取字体样式名称?
- node.js - 部署到 Heroku 后设置正确的 Axios 路径
- javascript - 异步函数 | 等待不等待承诺 {Partially D.js}