当前位置: 首页 > 知识库问答 >
问题:

MapStruct源和目标属性查找

艾仲渊
2023-03-14

我正在从ModelMapper到MapStruct的转换过程中,到目前为止一切都很顺利,除了在列表上排序和筛选的情况,如果我有一个从域对象到实体的映射,例如:

@Mapping(source = "contact.address.line1", target = "contactAddressLine1")

从一个api中,我想在contactAddressLine1上进行过滤或排序,然后我想查找源代码(或反向映射时的目标代码),以便将其添加到动态jpq或sql查询中。

有没有办法用MapSTRt做到这一点?

使用ModelMapper,我可以创建一个类型映射

modelMapper.createTypeMap(sourceClass, destinationClass);

后来呢

TypeMap<?, ?> typeMap = modelMapper.getTypeMap(sourceClass, destinationClass);

我可以使用这种类型映射来查找源和目标属性映射,从而确定用于动态排序和筛选查询的正确字段

共有1个答案

程阳平
2023-03-14

目前无法从mapstruct检索字段映射信息。mapstruct的github上有几个关于此问题的功能请求:

  • https://github.com/mapstruct/mapstruct/issues/702(更通用)
 类似资料:
  • 我有以下DTO和域对象。我正在使用Mapstruct将域对象复制到DTO对象。 使用下面的映射器将域映射到DTO。我不想将电话属性从域映射到DTO。怎么做?我尝试在mapping ignore中提供嵌套目标属性,但它给出了错误:

  • BindingX目前支持大部分对View的图形变换能力,如scale/rotate等等。详细说明如下: 属性 功能 transform.translate x&y方向平移 transform.translateX x方向平移 transform.translateY y方向平移 transform.scale x&y方向缩放 transform.scaleX x方向缩放 transform.sca

  • 我们希望能够将未映射的SourcePolicy设置为ReportingPolicy. ERROR,以便默认情况下丢失的源会大声失败。但是,有时源对象模型包含与目标无关的内容。因此,我们希望能够执行以下操作: 可以对目标执行类似操作。如果我尝试上述操作,我会得到错误,因为映射中需要目标。

  • mapstruct如何在以下方法之间做出决定: > 使用source的getter获取所有参数,然后调用目标的构造函数来创建映射。 使用所有空参数调用目标的构造函数,然后使用setter设置每个参数。 第二种方法可能是 这是目标对象类的样子。

  • 我有mapstruct映射器的实现如下 没有注释的行,我收到以下错误: 错误:(20,14)Java:目标属性“status”的几个可能的源属性。 我是否可以通过添加一些注释来避免上面的样板(显式映射),说明Pojo1具有更高的优先级?我研究了Java文档和mapstruct的源代码,但没有任何示例或线索对我的情况有帮助。我试图用InheritanceStrategy找到一些东西,但它看起来很像M

  • MapStruct:在映射到目标之前检查源的null。如果源为空,则需要从mapstruct接口引发自定义异常。