2015-06-24 2 views
1

У меня есть коллекция StateTax и LocalTax в SrcObject. Это необходимо сопоставить с коллекцией StateLocalTax. В SrcObject, если у меня есть три SrcStateTax и два SrcLocalTax, я хотел бы сопоставить их с коллекцией StateLocalTax, которая будет содержать четыре элемента. Три элемента этой коллекции будут содержать информацию stateTax с null destLocalTaxGroup, и один элемент будет содержать коллекцию destLocalTaxGroup с двумя данными LocalTax.Картографирование глубокой коллекции дозатора

public class SrcObject { 

private List<SrcStateTax> srcStateTaxGroup; 
private List<SrcLocalTax> srcLocalTaxGroup; 

//Getter setter 

} 

public class SrcStateTax { 
    private String srcStateCode; 
    private String srcStateTaxAmount; 
    …… 
//Getter setter 
} 

public class SrcLocalTax { 
private String srcLocalCode; 
private String srcLocalTaxAmt; 
    …… 
//Getter setter 
} 

целевой объект

public class DestObject { 
private List<StateLocalTax> stateLocalTaxGroup; 
…….. 

//Getter setter 

} 

public class StateLocalTax { 
    private String destStateCode; 
    private String destStateTaxAmount; 
    ……. 
    private List<DestLocalTax> destLocalTaxGroup; 

//Getter setter 
} 

public class DestLocalTax { 
private String destLocalCode; 
private String destLocalTaxAmt; 
} 

бульдозер Mapping:

<mapping> 
………. 
    <field map-id="map-StateTax"> 
     <a>srcStateTaxGroup</a> 
     <b>stateLocalTaxGroup</b> 
     <a-hint>com.sample.source.SrcStateTax</a-hint> 
     <b-hint>com.sample.target.StateLocalTax</b-hint> 
    </field>   
    <field map-id="map-LocalTax"> 
     <a>srcLocalTaxGroup</a> 
     <b>stateLocalTaxGroup.destLocalTaxGroup </b> 
     <a-hint>com.sample.source.SrcLocalTax</a-hint> 
     <b-hint>com.sample.target.DestLocalTax</b-hint> 
    </field>  
</mapping> 

<mapping map-id="map-StateTax"> 
    <class-a>com.sample.source.SrcStateTax</class-a> 
    <class-b>com.sample.target.StateLocalTax</class-b> 

    <field> 
     <a>srcStateCode</a> 
     <b>destStateCode</b> 
    </field> 
    <field> 
     <a>srcStateTaxAmount</a> 
     <b>destStateTaxAmount</b> 
    </field> 

</mapping> 

<mapping map-id="map-1099RLocalTaxGroups"> 
    <class-a>com.sample.source.SrcLocalTax</class-a> 
    <class-b>com.sample.target.DestLocalTax</class-b> 

    <field> 
     <a>srcLocalCode</a> 
     <b>destLocalCode</b> 
    </field> 
    <field> 
     <a>srcLocalTaxAmt</a> 
     <b>destLocalTaxAmt</b> 
    </field> 
    </mapping> 

Я правильно получаю сообщение об ошибке "No read or write method found for field (stateLocalTaxGroup.destLocalTaxGroup) in class .., но не знаете, как решить этот случай использования.

ответ

0

Вашего первое отображение бульдозер имеет следующее:

<field map-id="map-LocalTax"> 
    <a>srcLocalTaxGroup</a> 
    **<b>stateLocalTaxGroup.destLocalTaxGroup </b>** 
    <a-hint>com.sample.source.SrcLocalTax</a-hint> 
    <b-hint>com.sample.target.DestLocalTax</b-hint> 
</field> 

stateLocalTaxGroup является объектом списка. Вы не можете напрямую обращаться к «destLocalTaxGroup» из него, следовательно, ошибка: метод чтения или записи не найден для поля (stateLocalTaxGroup.destLocalTaxGroup). Он говорит, что в вашем объекте списка нет геттера/сеттера.

Самый короткий путь, чтобы решить проблему будет двигаться

private List<DestLocalTax> destLocalTaxGroup; 

Для вашего назначения объекта, так как имеют ту же иерархию.

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