2016-05-17 2 views
1
List<CustomerData> mapAddress(List<Address> addressList){ 

    List<Customer> customerData = new ArrayList<Customer>(); 

    if(CollectionUtils.isNotEmpty(addressList)){ 
     for(Address address : addressList) 
     { 
      customerData.add(this.dozerBeanMapper.map(address, Customer.class)); 
     } 
    } 
    return customerData; 
} 

CustomerData.java:список Mapping перечислить в Dozer

Has instance field 'address' of type String 

Address.java

Has instance field 'mainLocation' of type String 

В настоящее время я использую цикл для отображения каждого объекта Адрес с Заказчик, как я могу напрямую указать адресList с customerData (список к списку) без цикла. Может кто-то, пожалуйста, помогите мне с изменениями xml-файла для этой логики.

ответ

1

Насколько я помню, не было возможности отобразить коллекцию в коллекцию в бульдозер. Вам нужно перебирать его. Взгляните на этот закрытый вопрос и причину: https://github.com/DozerMapper/dozer/issues/5

Что бы вы могли сделать, чтобы облегчить боль, было бы использовать Java 8 (если можно) или Guava для более декларативного способа обработки этого сопоставления.

Java 8 Пример:

<FROM, TO> List<TO> mapList(List<FROM> fromList, final Class<TO> toClass) { 
    return fromList 
      .stream() 
      .map(from -> this.dozerBeanMapper.map(from, toClass)) 
      .collect(Collectors.toList()); 
} 

гуавы пример:

<FROM, TO> List<TO> mapList(List<FROM> fromList, final Class<TO> toClass) { 
    return Lists.transform(fromList, new Function<FROM, TO>() { 
     @Override 
     public TO apply(FROM from) { 
      return this.dozerBeanMapper(from, toClass); 
     } 
    }); 
} 
+0

Спасибо за информацию ... на самом деле я видел бульдозеров документы .. http://dozer.sourceforge.net/documentation/ collectionandarraymapping.html Там они упоминали о своем возможном, я пытаюсь это понять, но я не могу .. – Bharath

+0

Да, я это видел. Но обратите внимание, что отображение списка указано на '' '' уровне, а не на '' ''. Это означает, что он будет работать для полей списка в классе. Вы также можете создать класс-оболочку со списком, который будет автоматически сопоставлен с другой оболочкой с полем списка. Если вы хотите автоматически сопоставить его со списком, я думаю, что потребуется собственный конвертер бульдозера. – gmaslowski

+0

Да, у вас есть .., я пытаюсь использовать пример java 8, о котором вы упоминали выше, его предоставление метода ошибки toList() не определено – Bharath

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