0

mapstruct用于在下面的 DTO 中转换域是正在使用的映射:-

   @Mapper(componentModel = "spring", uses = {})
   public interface CategoriesMapper {
      @Mapping(source = "regionsid.id", target = "regionsid.id")
      CategoriesDTO categoriesToCategoriesDTO(Categories categories);  
   } 

    public class Categories implements Serializable {
        private Regions regionsid;
        public Regions getRegionsid() {
            return regionsid;
        }

        public void setRegionsid(Regions regions) {
            this.regionsid = regions;
        }

    }

    public class CategoriesDTO implements Serializable {
        private RegionsDTO regionsid;
        public RegionsDTO getRegionsid() {
            return regionsid;
        }

        public void setRegionsid(RegionsDTO regions) {
            this.regionsid = regions;
        }

    }

    public class Regions implements Serializable {
        private Long id;
    }

    public class RegionsDTO implements Serializable {
        private Long id;
    }

所以我在源端和目标端都有一些结构,但我得到以下错误: -

CategoriesMapper.java:28: error: Unknown property "regionsid.id" in return type.

如果我有 Set

资源 -

private Set<Regions> regions = new HashSet<>();

目标 -

private Set<RegionsDTO> regions = new HashSet<>();

CategoriesMapper.java:36: error: Can't map property "java.util.Set<com.equidity.xboard.service.dto.RegionsDTO> regions" to "java.util.Set<com.equidity.xboard.domain.Regions> regions". Consider to declare/implement a mapping method: "java.util.Set<com.equidity.xboard.domain.Regions> map(java.util.Set<com.equidity.xboard.service.dto.RegionsDTO> value)".`
4

2 回答 2

0

我认为最干净的方法是编写一个 RegionsMapper 接口,如下所示:

@Mapper(componentModel = "spring", uses = {})
public interface RegionsMapper extends EntityMapper<RegionsDTO, Regions> {

    Set<Regions> map(Set<RegionsDTO> value);
}

请注意,上面的代码声明了错误消息要求的方法。

此外,您还需要调整 @Mapper 注释(问题中的第一行代码),以便它使用这个新的映射器:

@Mapper(componentModel = "spring", uses = {RegionsMapper})

这个问题有点老了,但我刚刚使用 JHipster 遇到了非常相似的问题。

于 2018-10-01T17:26:22.053 回答
0

目前 MapStruct 不支持嵌套属性的自动映射。为了使您的映射工作,您将需要为您的 提供另一种方法CategoriesMapper

RegionsDTO regionsToRegionsDTO(Regions Regions); 

目前有待解决的问题 ( #60 ) 和待处理的 PR ( #937 ) 正在寻求解决这个新功能。

于 2016-12-02T23:38:21.513 回答