2016-06-13 14 views
5

私は以下のようにマッピングを作成します。ドメインオブジェクトのネストされたアドレスに、(street、cityなどの)フラットdtoオブジェクトプロパティをマップする方法。私は私がエラーを持ってしようとすると:mapstructでネストされたオブジェクトをマッピングする

[ERROR] diagnostic: Unknown property "address.postalCode" in return type. @Mapping(source = "city", target = "address.city"),

@Mapper(componentModel = "spring", uses = {}) 
public interface CompanyMapper { 
    @Mappings({ 
      @Mapping(source = "id", target = "id"), 
      @Mapping(source = "street", target = "address.street"), 
      @Mapping(source = "city", target = "address.city"), 
      @Mapping(source = "postalCode", target = "address.postalCode"), 
      @Mapping(source = "province", target = "address.province"), 
    }) 
    DomainObject map(DtoObject dto); 

とクラス...

public class Address { 
      private String street; 
      private Integer streetNumber; 
      private String city; 
      private String postalCode; 
      private String province; 
      //getters and setters 
    } 
public class DomainObject { 
     private String id; 
     private Address address; 
     //getters and setters 
} 

public class DtoObject { 
     private String id; 
     private String street; 
     private String city; 
     private String postalCode; 
     private String province; 
     //getters and setters 
} 

答えて

4

ネスティングをターゲット側に使用しようとしているとして、それはまだサポートされていません。これには機能要求があります(issue #389)が、まだ実装には至りませんでした。

+0

この問題の解決方法はありますか? 表現がソースにあればうまくいくと思います! – TinyOS

+0

ターゲット側の@Gunnarネストはまだサポートされていませんか?はいの場合は、この "ターゲット側ネスト"は、箱から取り出したロンボクでサポートされていますか? –

0

私は1つの方法でそれを行う方法を見つけることができませんでした。ここに私の解決策があります:

@Mapper 
public interface DtoObjectMapper { 

    Address toAddress(DtoObject dtoObject); 

    DomainObject toDomainObject(DtoObject dtoObject, Address address); 

} 

を使用しています。

@Component 
public class SomeClass { 

    @Autowired 
    private DtoObjectMapper dtoObjectMapper; 

    public DomainObject convert(DtoObject dtoObject) { 
     return dtoObjectMapper.toDomainObject(dtoObject, dtoObjectMapper.toAddress(dtoObject)); 
    } 
} 
関連する問題