首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >MapStruct -单个对象中的对象映射列表

MapStruct -单个对象中的对象映射列表
EN

Stack Overflow用户
提问于 2022-09-13 02:05:43
回答 1查看 302关注 0票数 0

我从第三方得到了一个对象列表,但是它总是只包含一个对象。因此,在目标的末尾,我将它创建为一个对象,而不是列表。该对象中包含多个列表,就像源对象一样。

这就是我试图将列表映射到对象的方式。ChargeTransaction包含orderInvoice作为对象,而不是列表。对于ChargeTransaction中的列表,我创建了单独的映射器。我不想在@afterMapping中编写java代码,因为这样嵌套列表将如何被映射。嵌套列表在两个对象中都是类型的。

代码语言:javascript
运行
AI代码解释
复制
@Mapping(target = "orderInvoice", source = "basePaymentRequest.invoice.eventPayload.orderInvoices")
ChargeTransaction createInvoiceCTMapper(PaymentTriggerBaseModel basePaymentRequest, ChargeType chargeType);

错误

代码语言:javascript
运行
AI代码解释
复制
java: Can't map property "List<OrderInvoice> basePaymentRequest.invoice.eventPayload.orderInvoices" to "OrderInvoice orderInvoice". Consider to declare/implement a mapping method: "OrderInvoice map(List<OrderInvoice> value)".

我试过了

代码语言:javascript
运行
AI代码解释
复制
@Mapping(target = "orderInvoice", expression= "java(basePaymentRequest.invoice.eventPayload.orderInvoices.get(0))")

但是它给出了Impl类的错误。

代码语言:javascript
运行
AI代码解释
复制
 chargeTransaction.setOrderInvoice( basePaymentRequest.invoice.eventPayload.orderInvoices.get(0) );

 java: incompatible types: com.sams.oms.ng.common.models.payment.request.OrderInvoice cannot be converted to com.sams.oms.ng.common.models.payment.cosmos.OrderInvoice
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-13 03:52:30

解决这个问题的最好方法是使用@Named@Mapping#qualifiedByName配对。

代码语言:javascript
运行
AI代码解释
复制
@Mapper
class Mapper {

  @Mapping(target = "orderInvoice", source ="basePaymentRequest.invoice.eventPayload.orderInvoices", qualifiedByName="firstElement")
  ChargeTransaction createInvoiceCTMapper(PaymentTriggerBaseModel basePaymentRequest, ChargeType chargeType);

  @Named("firstElement")
  OrderInvoice map(List<OrderInvoice> value) {
    if(value == null) return null;
    if(value.isEmpty()) return null;
    return map(value.get(0));
  }

  abstract com.sams.oms.ng.common.models.payment.request.OrderInvoice map(com.sams.oms.ng.common.models.payment.cosmos.OrderInvoice invoice);
}

通过这种方式,您将被告知MapStruct使用map(List<>)将发票转换为单个OrderInvoice,并使用抽象map(OrderInvoice)让MapStruct自动生成映射代码。

代码没有经过测试,因为我今天没有限制空闲时间,但我希望我的示例可能有用;如果有任何错误,请随意评论,我会尽快更正代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73701094

复制
相关文章
Kubernetes集群网络揭秘,以GKE集群为例
毛艳清,富士康工业互联网科技服务事业群运维中心主管,现负责公有云和私有云的运维工作,聚焦在云计算和云原生领域,主要关注企业迁云的策略与业务价值、云计算解决方案、云计算实施与运维管理,以及云原生技术的布道和落地实践。
灵雀云
2020/12/15
4.2K1
kubernetes helm安装pulsar集群
下载Pulsar Chart 首先,您需要下载Pulsar Chart,它是一个包含了Pulsar集群的Kubernetes资源定义文件的压缩包。您可以从Pulsar官网下载最新版本的Pulsar Chart。
堕落飞鸟
2023/03/28
1.3K0
如何使用Helm软件包管理器在Kubernetes集群上安装软件
Helm是Kubernetes的软件包管理器,允许开发人员和操作员更轻松地在Kubernetes集群上配置和部署应用程序。
姚啊姚
2018/10/29
2.1K0
Helm 编排教程
我们知道 Kubernetes 是一个分布式的容器集群管理系统,它把集群中的管理资源抽象化成一个个 API 对象,并且推荐使用声明式的方式创建,修改,删除这些对象,每个 API 对象都通过一个 yaml 格式或者 json 格式的文本来声明。这带来的一个问题就是这些 API 对象声明文本的管理成本,每当我需要创建一个应用,都需要去编写一堆这样的声明文件。
Ewdager
2020/08/06
2.8K0
Running Solr on Kubernetes
我们将为搜索工程师介绍在Kubernetes(k8s)上运行Solr的基础知识。 具体来说,我们涵盖以下主题:
黎明你好
2020/02/05
6.3K0
Running Solr on Kubernetes
Kubernetes 部署 Kafka 集群 「Helm 部署案例」
本项目完全兼容 KRaft, 不依赖 ZooKeeper,最小化的 Kafka 集群仅启动一个 Pod 即可。
sir5kong
2023/05/23
6K0
kubernetes-使用Helm安装Zookeeper集群
在Kubernetes中,使用Helm安装Zookeeper集群是一个非常方便的过程。Zookeeper是一个分布式的协调服务,用于协调集群中的应用程序。
玖叁叁
2023/05/04
1.4K0
kubernetes-使用helm创建Redis集群
Kubernetes是一个开源的容器编排系统,可以用于管理和部署容器化的应用程序。而Helm则是一个Kubernetes的包管理工具,可以方便地安装、升级和管理Kubernetes的应用程序。
玖叁叁
2023/05/04
1.8K0
Helm 构建 Kubernetes 软件包最佳管理工具
Helm 是 Kubernetes 的包管理器。包管理器类似于我们在 Ubuntu 中使用的apt、Centos中使用的yum 或者Python中的 pip 一样,能快速查找、下载和安装、升级软件包。Helm 由客户端组件 helm 和服务端组件 Tiller 组成, 能够将一组K8S资源打包统一管理, 是查找、共享和使用为Kubernetes构建的软件的最佳方式。
MySQL轻松学
2020/12/28
6490
Helm 构建 Kubernetes 软件包最佳管理工具
Kubernetes 安装 Helm 并使用 Helm 安装 wordpress
chart 是创建一个应用的信息集合,包括各种 Kubernetes 对象的配置模板、参数定义、依赖关系、文档说明等。chart 是应用部署的自包含逻辑单元。可以将 chart 想象成 apt、yum 中的软件安装包。
tanmx
2019/12/30
3.2K0
Kubernetes 安装 Helm 并使用 Helm 安装 wordpress
使用 helm 部署 k8s 资源
helm 是基于 kubernetes 的包管理器。它之于 kubernetes 就如 yum 之于 centos,pip 之于 python,npm 之于 javascript
jwangkun
2021/12/23
1.1K0
Kubernetes 集群中使用 Helm 搭建 Spinnaker 平台
上一篇文章 初试 Netflix 开源持续云交付平台 Spinnaker 中,我安装的是 Development Spinnaker,安装过程比较繁琐,而且没有跟 Kubernetes 集群集成起来,只能演示其部署管理功能中的 Pipeline 功能,而 Spinnaker 的另一个核心内容集群管理功能没法操作。本次我将实际操作演示如何在 Kubernetes 集群中安装 Spinnaker,后续演示如何使用 Spinnaker 执行 deploy 和 scale 一个应用到 Kubernetes 集群中。本次演示环境,我是在本机 MAC OS 上操作,以下是安装的软件及版本:
菲宇
2019/06/12
2.6K0
Kubernetes 集群中使用 Helm 搭建 Spinnaker 平台
​Kubernetes 集群仓库 harbor Helm3 部署
Harbor 是一个用于存储和分发 Docker 镜像的企业级 Registry 服务器,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源 Docker Distribution。作为一个企业级私有 Registry 服务器,Harbor 提供了更好的性能和安全。提升用户使用 Registry 构建和运行环境传输镜像的效率。
高楼Zee
2020/11/30
8.2K1
​Kubernetes 集群仓库 harbor Helm3 部署
k8s 部署利器 helm v3 安装及使用指南
helm 是基于 kubernetes 的包管理器。它之于 kubernetes 就如 yum 之于 centos,pip 之于 python,npm 之于 javascript。
山月
2020/06/18
3.5K0
通过Kyverno使用KMS、Cosign和工作负载身份验证容器镜像
随着软件供应链攻击的增加,保护我们的软件供应链变得更加重要。此外,在过去几年中,容器的采用也有所增加。有鉴于此,对容器镜像进行签名以帮助防止供应链攻击的需求日益增长。此外,我们今天使用的大多数容器,即使我们在生产环境中使用它们,也容易受到供应链攻击。在传统的 CI/CD 工作流中,我们构建镜像并将其推入注册中心。供应链安全的一个重要部分是我们构建的镜像的完整性,这意味着我们必须确保我们构建的镜像没有被篡改,这意味着保证我们从注册中心中提取的镜像与我们将要部署到生产系统中的镜像相同。证明镜像没有被篡改的最简单和最好的方法之一(多亏了 Sigstore)是在构建之后立即签名,并在允许它们部署到生产系统之前验证它。这就是 Cosign 和 Kyverno 发挥作用的地方。
CNCF
2022/04/19
5K0
Kubernetes 中的渐进式交付:蓝绿部署和金丝雀部署
渐进式交付是持续交付的下一步, 它将新版本部署到用户的一个子集,并在将其滚动到全部用户之前对其正确性和性能进行评估, 如果不匹配某些关键指标,则进行回滚。
LinuxSuRen
2019/05/10
1.5K0
Kubernetes 中的渐进式交付:蓝绿部署和金丝雀部署
初试 Kubernetes 集群中使用 Helm 搭建 Spinnaker 平台
上一篇文章 初试 Netflix 开源持续云交付平台 Spinnaker 中,我安装的是 Development Spinnaker,安装过程比较繁琐,而且没有跟 Kubernetes 集群集成起来,只能演示其部署管理功能中的 Pipeline 功能,而 Spinnaker 的另一个核心内容集群管理功能没法操作。本次我将实际操作演示如何在 Kubernetes 集群中安装 Spinnaker,后续演示如何使用 Spinnaker 执行 deploy 和 scale 一个应用到 Kubernetes 集群中。本次演示环境,我是在本机 MAC OS 上操作,以下是安装的软件及版本:
哎_小羊
2019/05/25
2.1K0
Kubernetes Helm3 部署 ElasticSearch & Kibana 7 集群
ElasticSearch 安装有最低安装要求,如果执行 Helm 安装命令后 Pod 无法正常启动,请检查是否符合最低要求的配置。
高楼Zee
2020/11/30
4.5K2
Kubernetes Helm3 部署 ElasticSearch & Kibana 7 集群
053.Kubernetes集群管理-Helm部署及使用
Helm 是 Kubernetes 的软件包管理工具。包管理器类似 Ubuntu 中使用的apt、Centos中使用的yum 或者Python中的 pip 一样,能快速查找、下载和安装软件包。通常每个包称为一个Chart,一个Chart是一个目录(一般情况下会将目录进行打包压缩,形成name-version.tgz格式的单一文件,方便传输和存储)。
木二
2020/05/19
1.3K0
Kubernetes 集群使用 Helm 搭建 GitLab 并配置 Ingress
通过之前的文章 初试 Kubernetes 集群中使用 Helm 搭建 Spinnaker 平台 ,我们已经演示了如何通过 Helm 安装 Spinnaker 平台到本地 Kubernetes 集群中。本次演示环境,我依旧是在本机 MAC OS 上操作,以下是安装的软件及版本:
哎_小羊
2019/05/25
6K0

相似问题

已选择Livewire选择字段

12

Safari选择下拉显示空字段

11

文本字段保持为空

11

即使字段设置为空,也不能将字段保持为空

21

当选择框选项为no时,如何动态保持输入字段为空?

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文