如何配置 MapStruct 以在无法映射枚举值时抛出异常
How to configure MapStruct to throw an exception when enum values can't be mapped
这是我的映射器:
@Mapper
public interface ProductMapper {
ProductClassification toProductClassification(ProductTypes pisType);
}
其中 ProductTypes
和 ProductClassification
是枚举。我希望它在无法映射枚举时抛出异常,但出现编译器错误:
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) 此功能尚未发布。
这是我的映射器:
@Mapper
public interface ProductMapper {
ProductClassification toProductClassification(ProductTypes pisType);
}
其中 ProductTypes
和 ProductClassification
是枚举。我希望它在无法映射枚举时抛出异常,但出现编译器错误:
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) 此功能尚未发布。