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

MapStruct-在复杂对象上下文中可迭代到不可迭代

刘凡
2023-03-14

我目前正在面对mapstruct和它的初学者问题,其中一个是以下问题。

我知道示例方案:https://github.com/mapstruct/mapstruct-examples/tree/master/mapstruct-iterable-to-non-iterable

    @Mapping(target = "employee.mainAddress.address", source = "employee.registeredAddresses[0].privateAddresses[0].address")
    abstract EmployeeDto map(Employee employee);

希望对象结构清晰。在源代码中有两个列表,应该为每个列表选择第一个元素。MapStruct如何做到这一点?

共有1个答案

夹谷野
2023-03-14

只需自己指定一个映射方法。MapStruct可以承担大部分映射代码的负担,但对于某些代码,您只需要稍微帮忙。这就是该示例试图演示的内容。

@Mapper
public abstract class MyMapper{

    @Mapping(target = "employee.mainAddress.address", source = "employee.registeredAddresses")
    abstract EmployeeDto map(Employee employee);
 
    // implement a concrete method yourself that MapStruct can recognise and call in its generated code
    AddressDto map(List<PrivateAddress> source) {

     // perhaps do some NPE checking, call MapStruct generated method below
     return map( source.get(0).get(0) );
  }

  // continue letting MapStruct do the bulk of the work
  abstract AddressDto map(Address source);

}
 类似资料:
  • 我发现了这个关于使用限定符进行可迭代到不可迭代映射的示例: 但是,如果我想从emails集合的第一个元素中提取一个特定的字段,例如,就像我处理code一样? 例如,我希望编写如下的映射:

  • 问题内容: 我正在尝试迭代由numpy.linspace生成的值的数组: 这段代码在我的办公室计算机上工作正常,但是今天早上我坐下来在另一台机器上在家工作,出现了此错误: 只是一个浮点数数组,脚本在打印内容时没有问题-只是显然对它们进行了迭代。关于导致它损坏的原因的任何建议以及可能的解决方法? 问题答案: 给您一维NumPy数组。例如: 因此: 无法工作。您将需要某种二维数组,在第二维中具有两个元

  • 问题内容: 我正在尝试运行一个for循环。这是我遇到问题的代码部分: 因此,我的目的是遍历aldurstengd_ororka,对于字典中的每个“年龄”元组,我为元组中的每个“项目”运行另一个for循环。我得到的错误是 TypeError:“ int”对象不可迭代 问题答案: 如果是字典,则此表达式: 是一个错误。也许您的意思是: 编辑:您看到的错误是非常有趣的,我确实使用此代码段重现了它: 代码

  • 可迭代(Iterable) 对象是数组的泛化。这个概念是说任何对象都可以被定制为可在 for..of 循环中使用的对象。 数组是可迭代的。但不仅仅是数组。很多其他内建对象也都是可迭代的。例如字符串也是可迭代的。 如果从技术上讲,对象不是数组,而是表示某物的集合(列表,集合),for..of 是一个能够遍历它的很好的语法,因此,让我们来看看如何使其发挥作用。 Symbol.iterator 通过自己

  • 问题内容: 我正在尝试编写一个程序,该程序允许您输入班级中的学生人数,然后为每个学生输入3个测试成绩以计算平均值。我是编程新手,但会不断收到错误消息,我不了解它的含义或解决方法。这是我到目前为止所拥有的: 问题答案: 当你写 您的意图是“运行这段代码时间,我刚才输入的值在哪里”。但是在Python,你传递给事情一个声明需求是某种迭代对象的。在这种情况下,您想要的只是一个statement。这将生成

  • 问题内容: 运行以下代码时,出现此错误“主循环’builtin_function_or_method’对象不可迭代”: 我有搜索stackoverflow,但是找不到我的问题的答案… 我检查了错别字,但找不到任何错误。请帮我! 问题答案: 直接回答 在这里的代码中: 更改为。 如果您想进一步了解此错误,请阅读以下内容: 调试时,最好删除try … except块,尤其是“ expect Excep