问题标签 [modelmapper]
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 - Java ModelMapper 平面模型到层次模型
我正在使用www.modelmapper.org并且我正在将相同的“平面”java DTO 映射到几个“分层”DTO。
“平面” DTO 具有许多原始属性。
“分层”有许多复杂类型,其中包含许多原始类型。这些 DTO 非常相似,但又不相同。
“扁平” DTO:
“分层 DTO:
TransactionRequest 应映射为 1) PurchaseRequest 和 2) CancelRequest。
问题之一是,金额必须从 Long(以次要单位)转换为 BigDecimal(以带十进制数字的主要单位)。我通过编写自己的 Long 到 BigDecimal 转换器来实现这一点。现在我遇到了以可重用方式定义所需映射的问题。我不想要的是为每个目标类型定义映射,如下所示:
我只想一次定义 Amount DTO 的映射(以及所有其他子类型映射,例如 PosInfo 等等),然后重新使用这些映射。我尝试了几个选项:
我尝试的第一件事是在我的 ModelMapper 中声明 TransactionRequest 到 Amount DTO 的映射。首先,我假设简单地声明这个映射就足以在将 TransactionRequest 映射到 PurchaseRequest 时使用映射机制。然而事实并非如此。
我尝试的第二件事确实有效,但似乎过于复杂:
- 我为 TransactionRequest 到 Amount 的映射创建了一个 PropertyMap。
- 我创建了一个自定义转换器 TransactionRequest 到 Amount。此转换器在其构造函数中需要一个 ModelMapper。我传递给构造函数的 ModelMapper 是从 1) 创建 PropertyMap 的 ModelMapper
- 我在 PurchaseRequest 和 CancelRequest 的 PropertyMaps 中使用这个转换器
这是代码:
有没有人知道更简单的方法?
java - ModelMapper:在运行时映射抽象类
我正在使用 ModelMapper 框架 ( http://modelmapper.org/ ) 在 Java 中映射对象。我在映射包含抽象类的具体类(DTO 到实体)时遇到了问题。
示例:Task 有一个 AbstractItems 列表。
AbstractItems 是问题和标准。
映射方法:
ModelMapper 尝试创建一个新的 AbstractItem 实例,这会引发异常。有没有办法在运行时映射抽象类?
像 QuestionDTO -> Question, CriteriaDTO ->Criteria
java - ModelMapper 处理 java 8 可选字段为可选
我一直在应用程序中使用 modelmapper 和 java 8 Optionals,它们工作正常,因为它们是原始类型;直到我将模型对象的一个字段更改为可选类型。然后所有的地狱都崩溃了。事实证明,许多库不能很好地处理泛型。
这是结构
当我尝试映射MyObjectDto
到时MyObject
,modelmapper 调用
with Optional<MySubObjectDto>
,我不明白这怎么可能(它们之间没有继承)。当然,崩溃很快。现在我已经将我的设置器更改为接受 Dto 类型只是为了生存下来,但这从长远来看是行不通的。有没有更好的方法来解决这个问题,还是我应该制造一个问题?
java - ModelMapper 在运行时更改泛型类型 - 奇怪的行为
我在 Java 中面临一个非常奇怪的行为。我有两个没有层次结构连接的不同类:类模板(类型层次结构是 Object -> A -> B -> Template)和类 TemplateDto(Object -> TemplateDto)。
我正在使用 ModelMapper (org.modelmapper.ModelMapper) 在两个类之间进行映射(由于字段名称相同,因此使用默认映射)。
有以下代码:
最后一行抛出:
这很奇怪。当我调试这一部分时,我看到映射后,resultDtos 是 List 类型的列表,而不是 List,这让我大吃一惊。
我试图清理我的tomcat,maven clean install,但它仍然会发生。
有任何想法吗?
java - ModelMapper:解决这个问题的最佳方法是什么
我有ModelMapper
图书馆的问题。
实体类:
Dto类:
我如何模拟问题:
预期的:
无效的
jhonatan.serafim
1
实际的:
1
jhonatan.serafim
1
解决这个问题的最佳方法是什么?
java - modelmapper-jooq 和处理“空”字段
我正在使用 modelmapper-jooq 将 jOOQ 记录映射到自定义 pojo。假设我有这样的表
所以 second_name 可以是null
. 我的人 POJO 看起来像:
当我映射Result<Record>
到Collection<Person>
时,此集合中的每个元素的 secondName 都相等null
。当我只映射前两行时,一切正常。如何正确处理,所以 secondName 字段null
仅在数据库中的对应字段为时null
?我检查了 Record 实例中的字段是否具有正确的值。我以这种方式配置模型映射器:
我也在做如下映射:
java - 使用 ModelMapper 时,如何为源类上的特定属性指定自定义映射?
具体来说,我想将我的 Source 类 ( PurchaseOrderFilterViewModel
) 中的 String 转换为org.joda.time.LocalDate
我的 Destination 类 ( PurchaseOrderFilter
) 中的一个。
我尝试PropertyMap<Source, Destination>
按照文档使用,但它不起作用。当 null 作为构造函数参数传入时,Destination 类中的日期总是分配给当前日期,这是默认的 LocalDate。
java - 使用 modelmapper 映射 2 个集合类型
我正在开发 Spring 应用程序,对于对象映射,我正在使用 ModelMapper 库。
我能够映射基本类映射,但是当我尝试映射 2 个集合元素时,源是一组带有附加属性(如名称和描述)的枚举,而目标是具有 id、名称和描述的 pojo。
我已经在映射配置文件中尝试过 typemap 和转换器,但我遇到了 mapper 的例外。
并且源类来自其他应用程序(其依赖项已添加到 pom.xml 中)。我也不希望源类型作为目标设置器中的参数。
前任。
资源:
源枚举:
modelmapper - ModelMapper Provider 在映射的第一级属性上被忽略
我已经在 ModelMapper 转换中成功使用了提供程序,但我偶然发现了一个奇怪的情况。我注意到 Provider 仅被考虑用于转换的“第一级”之外的对象,例如:我有两个层次结构:第一个)TipoConsultarProcessoResposta、TipoProcessoJudicial 和 TipoDocumento 第二个)ConsultarProcessoResposta、ProcessoJudicial 和 Documento TipoConsultarProcessoResposta 有一个 TipoProcessoJudicial依次有一个 TipoDocumento 列表,第二个层次结构类似于第一个层次结构。我正在从第一个层次结构转换到第二个层次结构,并且提供程序对于从 TipoDocumento 到 Documento 的转换工作正常,但是对于从 TipoProcessoJudicial 到 ProcessoJudicial 的转换,它被忽略了。
这是代码的相关部分:
DocumentoPropertyMap extends PropertyMap<TipoDocumento, Documento> and ProcessoJudicialPropertyMap extends PropertyMap<TipoProcessoJudicial, ProcessoJudicial>.
问题是 DocumentoProvider 被调用但 ProcessoJudicalProvider 没有被调用。ModelMapper 尝试调用一个也失败的全局提供程序,并通过构造函数进行实例化。