小编Mal*_*ran的帖子

映射结构:当源为空时,目标不应设置为空

我正在尝试使用 mapstruct 1.2.0.CR2 映射嵌套属性。(示例将customer.address.houseNumber映射到 userDTO.homeDTO.addressDTO.houseNo)。

期望:当 customer.address 为 null 时,我不想将 addressDTO 设置为 null。由于 addressDTO 包含“countyname”和其他已从其他不同源设置的属性。

请告知我是否可以设置某些属性/设置,以便当源为空时目标不会设置为空。

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

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

    @Mapping(source="houseNumber", target="houseNo" )
    void mapCustomerHouse(Address address, @MappingTarget  AddressDTO addrDTO)  ;

}
Run Code Online (Sandbox Code Playgroud)

我最初尝试像下面这样的单一映射

@Mapping(target="homeDTO.addressDTO.houseNo", source="address.houseNumber")
 abstract void mapCustomerHouse(Customer customer, @MappingTarget  UserDTO userDTO)  ; 
Run Code Online (Sandbox Code Playgroud)

然后尝试基于https://github.com/mapstruct/mapstruct/issues/649拆分映射。

两种方法都不会产生预期的结果/生成的方法代码

 protected void customerToHomeDTO(Customer customer, HomeDTO mappingTarget) {
        if ( customer == null ) {
            return;
        } …
Run Code Online (Sandbox Code Playgroud)

java null target mapstruct

20
推荐指数
1
解决办法
5万
查看次数

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

我想映射嵌套的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

java null nested mapstruct

5
推荐指数
1
解决办法
3779
查看次数

标签 统计

java ×2

mapstruct ×2

null ×2

nested ×1

target ×1