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

Mapstruct:为映射集合元素找到不明确的映射方法

张瀚漠
2023-03-14

我有两种将实体映射到域的方法。

RDomain entityToDomain(REntity rEntity)

/*
this method ignores some of the fields in the domain.
*/
RDomain entityToDomainLight(REntity rEntity)

当我试图定义实体列表到域的映射方法时,我发现了用于映射集合元素的模糊映射方法。

List<RDomain> entitiesToDomains(List<REntity> rEntities)

有没有一种方法可以定义用于映射对象集合的方法

共有2个答案

咸高谊
2023-03-14

就我所了解的Mapstruct而言,没有wo可以告诉映射者

List<RDomain> entitiesToDomains(List<REntity> rEntities)

它应该使用哪些to映射方法。但是您可以在映射器接口上实现Java8默认方法。

default List<RDomain> entitiesToDomains(List<REntity> rEntities) {

    List<RDomain> domains = new ArrayList<>();

    for(REntity r : rEntities) {
       //delegate to your dedicated mapper
       domains.add(entityToDomainLight(r));
    }

    return domains;

}
谷梁卓
2023-03-14

正如@Filip建议的那样,最好做这样的事情:

RDomain entityToDomain(REntity rEntity)

@Named(value = "useMe")
RDomain entityToDomainLight(REntity rEntity)

@IterableMapping(qualifiedByName = "useMe")
List<RDomain> entitiesToDomains(List<REntity> rEntities)
 类似资料:
  • 我正在使用mapstruct从一个DTO映射到另一个DTO。我有多个默认方法,但其中两个返回值为String,并且使用了与输入参数相同的类,这给了我“使用java MapStruct的mapping methods不明确”的错误。我在这里添加代码的相关部分: 错误是 发现将属性“Program ProgramInstance”映射到java.lang.String的映射方法不明确:java.lan

  • 我正在使用mapstruct从一个DTO映射到另一个DTO。我有多个默认方法,但其中2个返回值为String,并且使用相同的类作为输入参数,这给我带来了“使用java MapStruct的模糊映射方法”错误。 错误:(16,7)Java:在将属性“java.lang.String StatusHistory”映射到java.util.Map:java.util.Map toMap(java.lan

  • 有人能帮忙填写上面的评论部分吗?或者是否有其他选项来映射这些对象? 编辑:我尝试了下面的解决方案,但是接口实现类本身发生了变化。

  • 我有麻烦映射一个嵌套dto字段正确与MapStruct。我有几个DTO: 具有相应的映射器 到目前为止,一切工作都很好,生成的代码自动连接其他需要的映射器来正确地构建DTO。例如生成的仪器映射器实现 现在,当我试图创建一个包含嵌套工具dto的映射器时遇到了麻烦。映射器应使用instrumentMapper正确创建所需的dto。DTO: 映射器: 生成的代码: 现在media mapper得到了很好

  • 我可以想象这样一个解决方案:一个子映射器,在这个映射器中,我用如下所示的查找重写Dto to Domain方法: 但目标在MapStruct中是必需的。也许我可以以某种方式指定整个对象作为目标?

  • 例如,我有以下接口映射器: 在代码中,您可以看到映射和一些默认方法,其中包含其他映射。如何在Mapstruct映射中使用这些方法,以便Mapstruct使用这些方法在字段中填充值?