问题标签 [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 投票
2 回答
21889 浏览

java - MapStruct 字符串到列表的映射

我如何将字符串映射到列表和列表到字符串?

考虑我们有以下课程

在 Dozer 和 Orika 中,我们可以使用以下代码行轻松映射

我如何在 MapStruct 中进行相同类型的映射?我在哪里可以找到更多关于 mapstruct 的示例?

0 投票
1 回答
8554 浏览

java - 如何在 Mapstruct 集合映射器中使用修饰方法?

我正在使用 MapStruct 在具有依赖项注入的 Spring 应用程序中从 JPA 实体映射到 POJO DTO。

我已将 DTO 的一些额外处理添加到doc 中指定的装饰器中的方法中。

它适用于映射单个实体。但是我也有这些实体的集合(集合)的映射,并且当在关系中找到这些实体的集合时会自动调用该方法。

但是生成的集合映射方法不使用装饰方法来映射每个实体,只是使用委托上的“vanilla”生成方法。这是生成方法的代码:

委托方法本身不知道装饰器并在其自身上调用单个项目映射方法:

...并且永远不会为集合中的项目调用装饰方法。

有没有一种方法可以让 Mapstruct 在集合映射中使用装饰器方法,而不是在我的装饰器中手动编写集合方法(这有效但很冗长,并且违背了首先拥有 MapStruct 的目的,而不必写这种代码)?

0 投票
3 回答
37498 浏览

java - MapStruct: Map List of objects, when object is mapped from two objects

Assume I have such mapping:

Now I need to map List of ChildDto to List of Child, but they all have the same parent. I expect to do something like that:

But it doesn't working. Is there any chance to do it?

0 投票
1 回答
37098 浏览

java - 使用 Mapstruct 将多个源字段映射到相同类型的目标字段

考虑以下 POJO:

使用 MapStruct,我创建了一个映射XmlScheduleSchedulePayload. 由于“业务”“逻辑” ,我需要限制anotificationPeriod和字段值。这是我想出的,使用另一个类:schedulePeriodLecturestartend

有什么方法可以通过另一种方式实现(即另一个映射器、装饰器等)?如何将多个值(xmlSchedule、lecture)传递给映射器?

0 投票
2 回答
20813 浏览

java - 使用 mapstruct 映射嵌套对象

我创建如下映射。如何将平面 dto 对象属性(如(街道、城市等))映射到域对象中的嵌套地址。当我尝试时出现错误:

[错误] 诊断:返回类型中的未知属性“address.postalCode”。@Mapping(source = "city", target = "address.city"),

还有课...

0 投票
4 回答
10288 浏览

jpa - 返回类型中的未知属性

我正在尝试在我的 Play 2.4 Java8 JPA 项目中使用 mapstruct。我已经完成的步骤:

添加依赖项

模型

员工Dto

员工映射器

但它给了我一个编译错误

错误可能是什么问题?

0 投票
1 回答
4184 浏览

mapstruct - Mapstruct - 使用数学公式映射字段(例如 target="x", source="a+b")

我正在使用 mapstrcut 将我的实体映射到 dto,我现在面临一个问题,即在 DTO 中有一个额外的字段是“折扣”,我需要 mapstruct 来管理填充这个字段,这个字段是根据 2 计算的值(销售价格和零售价格)。

我的问题是如何像使用 mapstruct 一样进行这种映射。

当我尝试添加这一行时,构建时的代码中断说:

那么我该如何做这样的映射呢?

0 投票
1 回答
771 浏览

mapstruct - 使用 mapstruct SPI 的自定义命名策略

我试图让 mapstruct 使用不同的 setter 命名约定处理 bean。项目中的一些 bean 的名称类似于withValue(string val)

根据文档,可以在项目中实现 AccessorNamingStrategy 并配置 SPI。基于此,我创建了自己的 NamingStrategy 并在我的项目中创建了以下文件

/META-INF/services/org.mapstruct.ap.spi.AccessorNamingStrategy 其中包含我的自定义实现的完全限定名称。

但我似乎无法让 spi 为我的自定义命名策略工作。

深入到 Options.java 我发现属性“ mapstruct.alwaysGenerateServicesFile”需要设置为 true。但是 intelliJ 中的注释处理器似乎拒绝此属性,因为任何注释处理器都无法识别。

我还看到这个属性“ mapstruct.alwaysGenerateServicesFile”没有记录在http://mapstruct.org/documentation/1.1/reference/html/index.html#configuration-options

MapStruct 是否仍支持此功能。是否有人在您的项目中使用了自定义命名策略。

0 投票
1 回答
904 浏览

java - 覆盖 Mapper 类或客户映射器或属性映射中的方法 - Spring Boot

我有以下 DTO、Entity、Mapper 类将值保留在数据库中。我在 Date 列的其中一个属性中遇到问题。我以“DD-MM-yyyy”格式输入一个字符串。但是它在映射器类中失败,说它是一个不可解析的日期。不知道为什么编译时生成的类中没有默认日期格式

数据库结构

在此处输入图像描述 DTO

实体

在编译期间生成的 Mapper 实现类的代码段失败并返回错误说无法解析的日期

使用映射器类并失败的服务层中的代码

服务层中的自定义代码不使用使用明确定义的 simpledate 格式的映射器,该格式工作正常。请告知如何解决此问题并使用 Spring 引导方式堆栈,因为我的整个应用程序都是围绕它设计的。如果我不使用默认提供的映射器类和实现,那就不好了。

0 投票
2 回答
9974 浏览

java - 为什么这个 MapStruct 生成的类不包含 import 语句?

我正在使用 MapStruct 在 JPA 实体和 POJO DTO 之间进行映射。

我所有的实体都扩展了一个具有 ID 字段 (a java.lang.Long) 的公共基类。

我有以下抽象映射器,它允许我从 JPA 中的关系映射到 DTO 中的简单长字段(或列表)。

实体或List<entity>字段可以映射到Long/List<Long>字段,例如User.groups可以映射到UserDTO.groupIds

然而,生成的实现类不包含该类的任何导入语句AbstractBaseEntity,尽管它存在于抽象类中,因此代码无法编译:

这是为什么 ?我做错了吗?如何解决这个问题?

我在 Java 8 中使用 MapStruct 1.0.0.Final。

编辑:如果我添加一个直接使用该类的抽象方法,AbstractBaseEntity则添加导入:

EDIT2:在 MapStruct 的 Github 上发布问题:https ://github.com/mapstruct/mapstruct/issues/844