问题标签 [mapstruct]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2336 浏览

java - MapStruct:Object.class 到 Custom.class 的映射

我是MapStruct的新手,需要一些帮助。

我有一个 Source 类,有一个属性

它在运行时返回一个名为 TicketDetails 的自定义对象。

现在,在我的目标类中有一个名为的属性,

其中,我需要使用 TicketDetails 对象的属性进行映射。为了更好地理解,我正在编写下面的普通 java 代码示例。

现在,我的问题是,如何使用MapStruct来实现这种情况?

0 投票
2 回答
15185 浏览

java - MapStruct:将 2 个对象映射到第 3 个对象

我有对象 1 和对象 2。现在,我想用 1 和 2 的属性映射 object3。

说,我有 2 个对象:

现在,有了这些,我想把它映射到

其中,名字和姓氏将来自用户对象,城市和州来自地址对象。

现在,我的问题是,如何做到这一点?

但是,目前,我正在这样做

但是,在这里,我必须手动将映射写入addressToView().

因此,有什么办法可以避免这种情况吗?

或者,处理这种情况的首选方法是什么?

0 投票
1 回答
1685 浏览

mapstruct - 使用助手类时mapstruct模棱两可的异常

使用 mapstruct v1.0.0.Final,我面临一个模棱两可的映射异常,试图从SourceTypeto映射TargetType

我正在使用的映射是:

这不会编译,在两个接口 A 的方法中都会出现以下异常:

发现将属性“List children”映射到 List 的不明确映射方法:List noDetails(List arg0)、List withDetails(List arg0)。

有一种解决方法:将接口 A 的两个方法都放在接口 B 中。这样可以编译并且可以工作。但出于商业原因,我需要将它们分开。

谁能解释为什么第一种方法不起作用而解决方法起作用?

作为一个额外的问题,如果我只编写 1 种映射方法(没有限定符),我什至不需要声明该@IterableMapping方法,mapstruct 知道如何找到“子”方法。为什么?

谢谢你们!

0 投票
5 回答
6107 浏览

spring - 使用 MapStruct 将实体映射到 DTO

我是 mapstruct 的新手,我使用 spring 作为 DI 我跟进有关 DI 容器的 MapStruct 文档页面第 4.2 节我尝试将我的实体映射到 dto,如下所示:

当我运行 mvn install 我得到这个错误:

我的实体使用龙目岛,我确信有注册字段

请帮忙

0 投票
2 回答
6305 浏览

java - 如何使用 MapStruct 将 bean 映射到 java.util.Map?

我想使用MapStruct将 bean 类的字段映射到类似字典的类中。我的源类是标准 bean(简化示例):

现在我想将这些字段映射到类似 Map 的容器中:

换句话说,我希望MapStruct生成以下内容:

我在 MapStruct文档中找不到类似的东西。获取映射源(嵌套源、表达式)有很大的灵活性,但对于目标,我只能看到target = "propertyname"没有太多灵活性空间的符号。

映射到的最佳解决方案是java.util.Map什么?

0 投票
3 回答
3539 浏览

java - 可以告诉 MapStruct 不执行自动映射吗?

我有一个相当大的 bean(约 100 个属性),它被映射到几个较小的对象中。较小的目标对象可能具有与我的源 bean 中的名称相同的属性,但语义不同。

我希望MapStruct在这种特定情况下仅映射我使用@Mapping注释明确告知的内容,而不执行通常的自动映射。

MapStruct文档告诉我这个:

在生成的方法实现中,源类型 (...) 中的所有可读属性都将复制到目标类型 (...) 中的相应属性中。

我没有找到任何关闭此行为的配置选项。可以做到吗?

0 投票
2 回答
25440 浏览

java - 使用 MapStruct 时无法映射属性

我正在使用 MapStruct 库来映射对象,但出现此错误:

无法将属性“java.util.Date aDate”映射到“javax.xml.bind.JAXBElement ADATE”。考虑声明/实现一个映射方法:“javax.xml.bind.JAXBElement map(java.util.Date value)”。

我的问题:我应该在哪里取消这种映射方法?

0 投票
2 回答
24163 浏览

java - Java 映射:Selma 与 MapStruct

目前有两个主要流行的 Java 对象到对象映射框架取代了 Dozer ( http://dozer.sourceforge.net/documentation/mappings.html ),它们是:

  1. 塞尔玛 - http://www.selma-java.org/
  2. MapStruct - http://mapstruct.org/

除了这个页面(http://vytas.io/blog/java/java-object-to-object-mapping-which-framework-to-choose-part-2/)我还没有找到网上很多关于哪个框架比另一个更好,或者在什么情况下它们更好。想知道是否有人可以对此有所了解。在基于文档的功能方面,他们似乎在做同样的事情。

0 投票
2 回答
2035 浏览

java - MapStruct - 如何指定属性的通用类型?

Mapstruct 找不到属性的泛型类型。让我们举个例子来说明我想要做什么。

考虑以下 dtos :

我尝试实现以下映射器:

但这是 mapstruct 生成的一部分:

正如您在下面的代码中看到的,mapstruct 找不到目标集合的类型。它不会将 PersonDto 列表转换为 Person 列表。这是 mapstruct 应该生成的内容。

你能告诉我这是否是一个错误吗?如果有修复?还是我应该做不同的事情?谢谢,

0 投票
0 回答
800 浏览

java - MapStruct:实现错误不是抽象的,也不会覆盖抽象方法

我是 MapStruct 的新手,目前正在做 POC。我可以看到它MapStruct能够从接口生成一个通用方法的实现类

但是当我使用项目特定的类时,它给了我编译错误<InterfaceName>impl is not abstract and does not override the abstract method <customMethod>.

我正在使用只有一种方法的界面。接口带有注释,@Mapper但方法是简单的one-to-one映射,不需要@Mapping注释。

如前所述,如果我使用通用方法一切正常,但不适用于项目特定类。

有人可以就这个问题给我一些指示吗?