Mapstrtuct:嵌套对象。仅当源元素不为空时才创建目标对象

时间:2017-09-28 13:06:05

标签: java null nested mapstruct

我想映射嵌套的java对象。 Customer.address.houseNumberuserDTO.homeDTO.addressDTO.houseNo

期望:当且仅当Customer.address.houseNumber不为空时,才在homeDTO下创建userDTO对象。否则不要创建任何目标对象。

问题:我在映射器中使用了"NullValueCheckStrategy.ALWAYS"。但 mapstruct 正在检查address是否为空,然后创建homeDTO。在address内,houseNumber为NULL。我希望null检查直到houseNumber(叶子/最后一级对象),然后创建目标对象。

请告知我应该如何实现这个目标

这是我正在使用的映射。

@Mapper( nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS )
public interface Customer2UserMapper {

    @Mapping(source="address.houseNumber", target="homeDTO.addressDTO.houseNo" )
    void mapCustomerHouse(Customer customer, @MappingTarget  UserDTO userDTO)  ;

}

生成的代码位于https://github.com/mapstruct/mapstruct/issues/1303

1 个答案:

答案 0 :(得分:0)

这与mapstruct/mapstruct#879中的类似。目前您正在寻找的是不可能的。

如果@AfterMappingnull

,则可以使用address.houseNumber方法将其重新设置为null