2016-11-17 95 views
0

我使用mapstruct在DTO下面是映射转换域嵌套源和嵌套目标属性MapStruct错误我使用: -

@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. 

,如果我有什么设置

来源 -

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)".` 

回答

0

目前MapStruct不支持嵌套属性的自动映射。为了让你的映射工作,你将需要提供多一个方法你CategoriesMapper

RegionsDTO regionsToRegionsDTO(Regions Regions); 

目前开放的问题(#60),并且正在寻找解决这一新功能挂起的PR(#937) 。