问题标签 [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.
java - MapStruct 字符串到列表的映射
我如何将字符串映射到列表和列表到字符串?
考虑我们有以下课程
在 Dozer 和 Orika 中,我们可以使用以下代码行轻松映射
我如何在 MapStruct 中进行相同类型的映射?我在哪里可以找到更多关于 mapstruct 的示例?
java - 如何在 Mapstruct 集合映射器中使用修饰方法?
我正在使用 MapStruct 在具有依赖项注入的 Spring 应用程序中从 JPA 实体映射到 POJO DTO。
我已将 DTO 的一些额外处理添加到doc 中指定的装饰器中的方法中。
它适用于映射单个实体。但是我也有这些实体的集合(集合)的映射,并且当在关系中找到这些实体的集合时会自动调用该方法。
但是生成的集合映射方法不使用装饰方法来映射每个实体,只是使用委托上的“vanilla”生成方法。这是生成方法的代码:
委托方法本身不知道装饰器并在其自身上调用单个项目映射方法:
...并且永远不会为集合中的项目调用装饰方法。
有没有一种方法可以让 Mapstruct 在集合映射中使用装饰器方法,而不是在我的装饰器中手动编写集合方法(这有效但很冗长,并且违背了首先拥有 MapStruct 的目的,而不必写这种代码)?
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?
java - 使用 Mapstruct 将多个源字段映射到相同类型的目标字段
考虑以下 POJO:
使用 MapStruct,我创建了一个映射XmlSchedule
到SchedulePayload
. 由于“业务”“逻辑” ,我需要限制anotificationPeriod
和字段值。这是我想出的,使用另一个类:schedulePeriod
Lecture
start
end
有什么方法可以通过另一种方式实现(即另一个映射器、装饰器等)?如何将多个值(xmlSchedule、lecture)传递给映射器?
java - 使用 mapstruct 映射嵌套对象
我创建如下映射。如何将平面 dto 对象属性(如(街道、城市等))映射到域对象中的嵌套地址。当我尝试时出现错误:
[错误] 诊断:返回类型中的未知属性“address.postalCode”。@Mapping(source = "city", target = "address.city"),
还有课...
jpa - 返回类型中的未知属性
我正在尝试在我的 Play 2.4 Java8 JPA 项目中使用 mapstruct。我已经完成的步骤:
添加依赖项
模型
员工Dto
员工映射器
但它给了我一个编译错误
错误可能是什么问题?
mapstruct - Mapstruct - 使用数学公式映射字段(例如 target="x", source="a+b")
我正在使用 mapstrcut 将我的实体映射到 dto,我现在面临一个问题,即在 DTO 中有一个额外的字段是“折扣”,我需要 mapstruct 来管理填充这个字段,这个字段是根据 2 计算的值(销售价格和零售价格)。
我的问题是如何像使用 mapstruct 一样进行这种映射。
当我尝试添加这一行时,构建时的代码中断说:
那么我该如何做这样的映射呢?
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 是否仍支持此功能。是否有人在您的项目中使用了自定义命名策略。
java - 覆盖 Mapper 类或客户映射器或属性映射中的方法 - Spring Boot
我有以下 DTO、Entity、Mapper 类将值保留在数据库中。我在 Date 列的其中一个属性中遇到问题。我以“DD-MM-yyyy”格式输入一个字符串。但是它在映射器类中失败,说它是一个不可解析的日期。不知道为什么编译时生成的类中没有默认日期格式
数据库结构
实体
在编译期间生成的 Mapper 实现类的代码段失败并返回错误说无法解析的日期
使用映射器类并失败的服务层中的代码
服务层中的自定义代码不使用使用明确定义的 simpledate 格式的映射器,该格式工作正常。请告知如何解决此问题并使用 Spring 引导方式堆栈,因为我的整个应用程序都是围绕它设计的。如果我不使用默认提供的映射器类和实现,那就不好了。
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