2012-09-27 15 views
2

我一直在google搜索和嘗試不同的推土機配置選項,但至今未能找到一個簡單的解決方案... 問題是如下:推土機 - 地圖類字段添加到平面表示

class A { 
String test; 
B test2; 
} 
class B { 
String test3; 
String test4; 
} 

class C { 
String test; 
String test3; 
String test4; 
} 

現在我想將A(包括B)中的所有字段映射到C中的平面表示。是否可以使用配置映射它?問題是,我需要在許多不同類型的地圖B,我不想寫這樣的映射爲他們每個人:

<mapping> 
    <class-a>A</class-a> 
    <class-b>C</class-b> 
    <field> 
     <a>test2.test3</a> 
     <b>test3</b> 
    </field> 
    <field> 
     <a>test2.test4</a> 
     <b>test4</b> 
    </field> 
</mapping> 

將不勝感激找到了一個解決方案:)

+0

您是否找到解決方案? – Rytek

回答

1

的技巧是使用映射ID和 「本」。您只需要定義一次caseB並且可以重用它。

<mapping map-id="caseB"> 
    <class-a>B</class-a> 
    <class-b>C</class-b> 
    <field> 
     <a>test3</a> 
     <b>test3</b> 
    </field> 
    <field> 
     <a>test4</a> 
     <b>test4</b> 
    </field> 
</mapping> 
<mapping> 
    <class-a>A</class-a> 
    <class-b>C</class-b> 
    <field map-id="caseB"> 
     <a>test2</a> 
     <b>this</b> 
    </field> 
</mapping> 
1

在推土機上常見問題解答:

我可以將一個字段映射到另一個在目標對象中嵌套n層的字段嗎?

是的。 Dozer支持嵌套字段的點符號。與其他推土機田地映射一樣,這些是雙向的。

<field> 
    <a>someNestedObj.someOtherNestedObj.someField</a> 
    <b>someOtherField</b> 
</field> 

dozer FAQ