具有具有各种枚举的Maapstruct映射接口和DTO。我有两个不同的枚举格式都是:
public enum TxAccTypeDto {
FINANCE("Finance")
}
public enum TxStatusDto {
PENDING("Pending"),
}
public enum TxStatusDto {
PENDING("Pending"),
}
public enum ContactMethod {
TELEPHONE,
问题我有是从类型字符串(不是enum)的实体字段转换时,我如何得到正确的枚举使用和匹配上的代码(值在括号中)?
如果只使用一个enum,则可以使用this:
default TxAccTypeDto toEnum(final String code) {
return Arrays.stream(TxAccTypeDto.values()).filter(
testEnum -> testEnum.getCode().equals(code))
.findFirst()
.orElse(null);
}
但它显然不知道用参数String代码映射到的enum。我希望我能:
- 只需执行toEntity(from mdto)和toDto(fromStringCode, forDtoTypeAndFile)
- 只添加每个类型的代码,而不是每个源/目标
这篇文章有帮助:将自定义方法映射器映射到Mapstruct
但是表示指定限定符/单个映射。希望它按类型来做,并一次描述映射。请注意,问题来自StringToEnum,两者都具有单个字符串参数,因此不合格
@Mappings({
@Mapping(source = "sourceAccountType", target = "sourceAccountType", qualifiedByName = "txAccTypeDto"),
@Mapping(source = "targetAccountType", target = "targetAccountType", qualifiedByName = "txAccTypeDto"),
@Mapping(source = "transactionStatus", target = "transactionStatus", qualifiedByName = "txStatusDto"),
})