gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 06:29:16 27 4
gpt4 key购买 nike

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

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

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

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

这是我正在使用的 map 。

@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

最佳答案

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

一种方法是使用一个 @AfterMapping 方法,如果 address.houseNumber 是,则将其设置回 null

关于java - MapStruct嵌套对象,仅当源元素不为null时创建目标对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46469955/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com