【发布时间】:2020-02-14 07:45:05
【问题描述】:
我有一个特殊的问题来生成映射实现,我需要映射一个空对象的属性。 ObjectRequestMapper中的代码是这样的:
@Mapper(collectionMappingStrategy = CollectionMappingStrategy.ADDER_PREFERRED, nullValueCheckStrategy =
NullValueCheckStrategy.ALWAYS, nullValueMappingStrategy = NullValueMappingStrategy.RETURN_NULL, uses = {
WrapperGrpcMapper.class, AddressRequestMapper.class })
public interface ObjectRequestGrpcMapper {
@Mapping(target = "wcsStoreId", source = "storeId")
@Mapping(target = "linesList", source = "lines")
ObjectRequest map(Long storeId, @Context String countryCode, List<ObjectLines> lines, Address address);
ObjectRequestLine lineToProto (ObjectLine line);
}
还有AddressRequestMapper:
public interface AddressRequestMapper {
default Address toProto(Address address, @Context String countryCode){
return this.map(address, countryCode);
}
Address map(Address address, String countryCode);
}
当我调用ObjectRequest 的映射并使用countryCode = "EN" 传递所有参数并且对象地址为空时,AddresRequestMapper 的映射器不适用,因为ObjectRequestMapper 检查Address == null,然后不将ObjectRequest.Address 映射到地址
这种情况有办法解决吗?
谢谢
【问题讨论】:
-
我实现的解决方案是使用@Aftermapping 检查地址是否为空,设置countryCode
标签: java dictionary mapstruct