2016-08-22 5 views
1

Я новичок в API MapStruct, может ли кто-нибудь сказать, как делать вложенное сопоставление. У меня есть два класса: это мой фактический класс purchaseOrder, который известен моему целевому классу, а другой класс EDPurchaseOrder, который известен как исходный файл, здесь не беспокойтесь о соглашениях об именах, которые я использовал, просто перейдите к исходным и целевым файлам.Вложенное сопоставление в Mapstruct

Источник Классы
Источник класс 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

Так что я полагаю, вам имеют одинаковую иерархию объектов на целевой стороне e, например. a SongDTO, LibraryDTO и TrackDTO.

Затем вы должны были бы объявить метод отображения для каждой из этих пар соответствующих объектов, настройка его с помощью @Mapping при необходимости:

public interface MyMapper { 

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

    LibraryDTO libraryToDto(Library library); 

    TrackDTO trackToDto(Track track); 
} 

Тогда, например, сгенерированная реализация songToDto() вызовет libraryToDto(), чтобы отобразить библиотеку песни в библиотеку DTO DTO.

Также ознакомьтесь с reference guide, чтобы узнать больше.

+0

Привет @Gunnar Спасибо за ваш ответ, я уточнил, что мой вопрос может помочь с этим снова мне – AdamIJK

+0

Вы пробовали то, что я предложил выше? – Gunnar

+0

Привет @Gunnar Я пробовал ваши предложения, и я слежу за тем же, что и вы, приведенные выше его работы для меня, но я пытаюсь использовать несколько сценариев, которые сталкиваются с трудностями, чтобы сопоставить мои классы, и вы можете дать свой идентификатор почты? Я пришлю все мои вопросы. – AdamIJK

Смежные вопросы