当前位置: 首页 > 知识库问答 >
问题:

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

董俊
2023-03-14

我想映射嵌套的java对象。customer.address.housenumber改为userdto.homedto.addressdto.houseno

期望:当且仅当customer.address.houseNumber不为null,则在userdto下创建homedto对象。否则,不要创建任何目标对象。

问题:我在映射器中使用了“NullValueCheckStrategy.Always”。但是mapstruct正在检查address是否为null,然后创建homedto。在地址中,houseNumber为空。我希望在houseNumber(leaf/last level object)之前进行空检查,然后创建目标对象。

请告诉我该如何做到这一点

下面是我正在使用的映射。

@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个答案

阎啸
2023-03-14

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

一种方法是使用@aftermapping方法,如果address.houseNumbernull,该方法将其设置为null

 类似资料:
  • 我正在使用ElasticSearch5.4,试图从嵌套数据类型中删除一个元素。 我有以下映射: 我在《邮递员》中尝试过以下内容: localhost:9200/asset/bookmark/20976/_update?pretty 但我得到以下错误: 我在StackOverflow[1][2]的几个不同问题中遵循了这些建议,但没有成功。 嵌套对象是有效的,因为我已经用数据填充了它。此外,值也是有效

  • 问题内容: 我不太使用php,并且在对象创建方面有些模糊。我需要发出一个发送json的网络服务请求,我想我已经覆盖了那部分。在提交数据之前,我需要创建一个嵌套对象。根据我对基于ecma的脚本语言的经验,我认为这是微不足道的,但是我发现该语法难以导航。我要创建的对象如下。 我已经看到了许多平面对象的示例,但是还没有找到嵌套对象的最小示例。上面对象的php语法是什么?这是在PHP中做的不寻常的事情吗?

  • 本文向大家介绍PHP 中如何创建嵌套 JSON 对象,包括了PHP 中如何创建嵌套 JSON 对象的使用技巧和注意事项,需要的朋友参考一下 JSON结构可以使用以下代码创建-

  • 问题内容: 假设我有一个对象,其键对应于产品,值对应于对象,对象又具有对应于那些产品已售出的价格点的键,以及对应于所售数量的值。 例如,如果我以1美元的价格出售10个小部件,以2美元的价格出售5个小部件,那么我将具有以下数据结构: 我想遍历这种结构并在这样的表中生成行: 在Python中,可以嵌套列表推导来遍历这样的列表数据结构。使用ng-repeat可以做到吗? 问题答案: ng-repeat目

  • 问题内容: 如何将JSON传递到RAILS应用程序,以便它将以has_many关系创建嵌套的子对象? 这是我到目前为止的内容: 两个模型对象。 使用通勤,我可以设置标准控制器。我希望能够使用JSON在一个REST调用中创建一个Commute对象以及几个子Location对象。我一直在尝试这样的事情: 更具可读性的JSON是: 执行该命令时,将得到以下输出: 看起来好像正在读取JSON数组的loca

  • 我有一个数据类对象,其中包含嵌套的数据类对象。但是,当我创建主对象时,嵌套的对象会变成字典: 如您所见,只有有效。 理想情况下,我想构造我的对象来获得这样的东西: 除了在访问对象属性时手动将嵌套字典转换为相应的数据类对象之外,还有别的方法可以实现这一点吗?