问题标签 [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 回答
6358 浏览

java - Mapstruct:将多个源对象映射到子对象

给定一组四个对象,例如:

我希望生成如下映射:

我目前无法找到一种方法来使用来自 C 和 D 的数据填充 A 内部的 B 对象。

有谁知道这个问题的解决方案,或者有更好的方法?

0 投票
2 回答
7825 浏览

hibernate - 如何管理 Mapstruct 中的延迟加载?

我正在处理与数据库中延迟加载的对象相关的问题。

假设我们有以下实体。

Dto 将是

那么这可能是获取所有用户而没有 EJBException 的最佳方法,因为我正在获取他们的懒惰?

编辑:解决方案

假设您有以下数据模型

  1. 无地址查询,异常:当从模型映射到 DTO 时,它会尝试映射addresses,但因为延迟加载(通过休眠或任何其他框架)最终会出现异常。

此外,您可以忽略addresses被映射的,如 @Mehmet Bektaş 。但是不需要定义source,它是可选的。

  1. 获取关系:就是这样。添加一个join来查询addresses和 Mapstruct 将完成其余的工作。
0 投票
1 回答
475 浏览

java - 如何为 MapStruct 创建自定义组件模型?

MapStruct提供了用于创建转换器的组件模型。但是,这些转换器是像独立的 Spring 组件一样生成的。有没有办法将它们“放入” ConversionService

是将 Spring 转换器添加到转换服务的示例。有没有办法创建一个CoversionServiceAwareConverter用作超类的自定义组件模型?

0 投票
1 回答
568 浏览

mapstruct - Mapstruct 将对象转换为列表

我必须将一个对象映射到另一个对象的列表,如下所示

公共列表图(ClassA A){

.... 从 ClassA 填充 C1 和 C2 的逻辑将 C1 和 C2 添加到列表

返回列表;

}

在生成的 Impl 类中,我收到编译错误“找不到符号 ClassB”。类“ClassB”未导入到生成的 impl 类中。请帮我解决这个问题。

0 投票
5 回答
13121 浏览

java - 使用 MapStruct 进行转换时防止循环引用

今天我开始使用 MapStruct 为我的项目创建我的模型到 DTO 转换器,我想知道它是否自动处理循环引用,但事实证明它没有。

这是我用来测试它的转换器:

这是测试:

Notifica、Avvisinotifica 及其各自的模型是带有 setter 和 getter 的简单 POJO,所以我认为不需要发布代码(Notifica 扩展了 Corrispondenza,如果您想知道的话)

这段代码进入了一个无限循环,这并不奇怪(尽管我希望它能处理这些情况)。虽然我认为我可以找到一种优雅的方式来手动处理它(我正在考虑使用方法@MappingTarget来插入引用的对象),但我想知道是否有某种方法可以告诉 MapStruct 如何自动处理循环引用。

0 投票
1 回答
5763 浏览

intellij-idea - mapstruct 注释处理器没有生成映射器

我使用 jhipster 生成器创建了一个 spring boot 应用程序,然后我添加到实体作者和书籍,作者有很多书,而一本书有一个作者。

然后当我运行我的应用程序时,Intellij IDEA我得到了这个堆栈跟踪:

从 GitHub 中的一个类似问题(https://github.com/jhipster/generator-jhipster/issues/2399)我了解到 mapstruct 注释处理器没有生成 AuthorMapperImpl.java 和 BookMapperImpl.java 我能找到的只是 AuthorMapper.java 和BookMapper.java:

作者Mapper.java

BookMapperImpl.java

JHipster 版本

生成器-jhipster 2.27.2

JHipster 配置 (.yo-rc.json)

实体配置

作者.json

Book.json

0 投票
3 回答
5296 浏览

java - 使用 mapstruct 映射带有参数的集合

要使用 mapstruct 映射某个对象,我需要一些自定义后处理,这需要一个额外的参数来完成它的工作:

这工作得很好。当我向此映射器添加以下方法时,问题就开始了:

我还需要传递此参数(userLanguage),但在这种情况下 mapstruct 似乎“崩溃”了:我为此部分生成了以下代码(这自然会产生编译错误):

我确信它与参数有关,因为如果我(从所有映射方法中)删除它,那么 mapList 方法就会正确生成。

在这种情况下需要做些什么来允许自定义参数?

0 投票
1 回答
2770 浏览

java - 抽象实体到 dtos 的 Mapstruct 转换列表

我必须用 mapstruct 映射一个抽象实体列表,但我不知道该怎么做,因为我有以下错误消息:

无法为此方法生成任何实现。找不到将源元素类型映射到目标元素类型的方法或隐式转换。

0 投票
1 回答
1640 浏览

java - Weblogic 12c - Mapstruct - 1.0.0.Final - ClassNotFoundException:找不到实现

我已经使用 mapstruct 一段时间了,但是在尝试部署我的一个 web 服务时发现了这个问题:

当我检查正在部署的 WAR 时,在同一个 bar.foo.mapper 文件夹中有 MyMapper.class 和 MyMapperImpl.class,与其他正常工作的服务一样。

在 POM 中,我遵循了官方文档中所述的设置。

我已经在这里阅读了@gunnar 的答案,但在我的情况下,实现位于 WAR 接口旁边。

有任何想法吗?

谢谢!

更新:我刚刚尝试使用 1.1.0.Beta1 版本,结果相同

UPDATE-2:这是引发异常的日志:

调试时,这里抛出异常:

...因为 classLoader.loadClass 找不到 bar.foo.mapper.MyMapperImpl,即使该类位于接口旁边。

0 投票
2 回答
31307 浏览

java - MapStruct 忽略自动未映射的属性

我在我的代码中使用在不同业务用例之间共享的大型模型(超过 50 个字段)的 MapStruct。根据入口点,某些属性将被映射,而有些则不会。当我构建我的项目时,我总是会收到“警告:未映射的目标属性”消息。

我已经研究并看到可以通过使用语义来告诉 mapstruct 忽略该字段

问题是,考虑到我的对象有这么多字段,需要大量代码来忽略每个映射器类中的每个属性。我也不希望在我的日志中出现此警告。有没有办法告诉 mapstruct 忽略未映射的内容,避免此消息?