Java mapstruct-在复杂对象上下文中从iterable到noniterable

Java mapstruct-在复杂对象上下文中从iterable到noniterable,java,mapstruct,Java,Mapstruct,我目前面临的是mapstruct和它的初学者问题,其中一个问题如下 我确实知道样品提案: 我确实知道如何处理复杂的映射,但我确实在脑海中遇到了一个障碍,比如: @Mapping(target = "employee.mainAddress.address", source = "employee.registeredAddresses[0].privateAddresses[0].address") abstract EmployeeDto

我目前面临的是mapstruct和它的初学者问题,其中一个问题如下

我确实知道样品提案:

我确实知道如何处理复杂的映射,但我确实在脑海中遇到了一个障碍,比如:

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

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

只需自己指定一个映射方法即可。MapStruct可以承担大部分映射代码的负担,但对于某些代码,您只需要提供一点帮助。这就是这个例子试图证明的

@制图员 公共抽象类MyMapper{ @Mappingtarget=employee.mainAddress.address,source=employee.RegisteredAddress 抽象雇员映射雇员雇员; //自己实现一个具体的方法,MapStruct可以识别并调用它生成的代码 地址到映射列表源{ //也许做一些NPE检查,调用下面的MapStruct生成的方法 返回map source.get0.get0; } //继续让MapStruct完成大部分工作 抽象地址到映射地址源; }
只需自己指定一个映射方法。MapStruct可以承担大部分映射代码的负担,但对于某些代码,您只需要提供一点帮助。这就是这个例子试图证明的

@制图员 公共抽象类MyMapper{ @Mappingtarget=employee.mainAddress.address,source=employee.RegisteredAddress 抽象雇员映射雇员雇员; //自己实现一个具体的方法,MapStruct可以识别并调用它生成的代码 地址到映射列表源{ //也许做一些NPE检查,调用下面的MapStruct生成的方法 返回map source.get0.get0; } //继续让MapStruct完成大部分工作 抽象地址到映射地址源; }
MapStruct不能为您这样做。它无法识别[0]符号。MapStruct无法为您这样做。它无法识别[0]符号。谢谢@sjaak。我要试一试。将来是否有计划将集合评估(如我示例中的符号)集成到mapstruct中,或添加EL或类似的工具以使其工作?我认为这是一个问题请求。你可以看看问题追踪者hank You@sjaak。我要试一试。将来是否有计划将集合评估(如我示例中的符号)集成到mapstruct中,或添加EL或类似的工具以使其工作?我认为这是一个问题请求。您可以查看问题跟踪程序