MapStruct嵌套对象,仅当源元素不为null时创建目标对象

Mal*_*ran 5 java null nested mapstruct

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

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

问题: 我已经"NullValueCheckStrategy.ALWAYS"在映射器中使用了,但是mapstruct正在检查是否address不为空,然后它会创建homeDTO. 里面addresshouseNumber就是null。我想要空检查直到houseNumber(叶/最后一级对象),然后创建目标对象。

我怎样才能实现这个目标?

这是我正在使用的映射。

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

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

}
Run Code Online (Sandbox Code Playgroud)

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

Fil*_*lip 5

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

一种方法是使用一种@AfterMapping方法将其设置回null如果address.houseNumbernull

  • 差不多 2.5 年过去了,有什么更新吗?提前致谢。 (2认同)