2016-08-22 25 views
1

私はMapStruct APIを初めて使用しています。ネストされたマッピングを行う方法を誰にでも教えてください。 私は2つのクラスを持っています。私の実際のpurchaseOrderクラスです。これは私のターゲットクラス、もう1つはソースファイルとして知られているEDPurchaseOrderクラスです。ここでは、使用した命名規則について心配しません。Mapstructのネストされたマッピング

ソースクラス
SourceクラスEDCustomerOrderここでその参照クラス

public class EDCustomerOrder{ 
     private Integer orderID; 
     private String orderNumber; 
     private BigDecimal orderTotalQty; 
     private String UOM; 
     private PickupDTO pickupPoints; 
     private Integer supplierID; 
     private String supplierName; 
     private String supplierNature; 
     private EDAddress supplierEDAddress; 
    } 

    public class EDPickup{ 
     private List<EDPOItem> items; 
    } 

    public class EDAddress{ 
     private String addressLine1; 
     private String addressLine2; 
     private String addressLine3; 
     private String city; 
     private String state; 
     private string countryCode; 
     private String country; 
     private String postalCode; 
    } 

    public class EDPOItem{ 
     private Integer itemID; 
     private String itemCode; 
     private String itemDescription; 
     private Integer itemQuantity; 
    } 

ターゲットクラス
私のターゲットクラスのCustomerOrderが、その参照クラス

public class CustomerOrder{ 
     private Integer orderID; 
     private String orderNumber; 
     private List<Pickup> pickupPoints; 
     private Supplier supplierDetail; 
    } 

    public class Pickup{ 
     private Integer pickupID; 
     private Integer pickupLocationNumber; 
     private List<POItem> items; 
    } 

    public class POItem{ 
     private Integer itemID; 
     private String itemCode; 
     private String itemDescription; 
     private Integer itemQuantity; 
    } 

    public class Supplier{ 
     private Integer supplierID; 
     private String supplierName; 
     private String supplierNature; 
     private Address supplierAddress; 
    } 

    public class Address{ 
     private String addressLine1; 
     private String addressLine2; 
     private String addressLine3; 
     private String city; 
     private String state; 
     private string countryCode; 
     private String country; 
     private String postalCode; 
    } 

答えて

1

だから私はあなたを想定ターゲットsid上に同じ階層のオブジェクトを持つe。 a SongDTO,LibraryDTOおよびTrackDTOである。その後

public interface MyMapper { 

    @Mapping(source="name", target="title") 
    SongDTO songToDto(Song song); 

    LibraryDTO libraryToDto(Library library); 

    TrackDTO trackToDto(Track track); 
} 

例えば:

その後、あなたは、必要に応じて@Mappingを経由して、それを構成し、対応するオブジェクトのそれらのペアごとにマッピング方法を宣言する必要があると思いますsongToDto()の生成された実装は、曲のライブラリを曲DTOのライブラリDTOにマッピングするために、libraryToDto()を呼び出す。

詳しくはreference guideをご覧ください。

+0

こんにちは@Gunnarあなたの返信をありがとう、私は私の質問を洗練された私に再び助けてもらうことができます – AdamIJK

+0

私は上記のことを試しましたか? – Gunnar

+0

こんにちは@Gunnar私はあなたの提案を試みたと私はあなたのような私のために働いて与えられたような、しかし私はあなたのメールIDを与えることができます私のクラスをマップする困難に直面していくつかの異なるシナリオをしようとしている?私はすべての私の質問を送るでしょう。 – AdamIJK

関連する問題