如何使用Dozer将简单的ArrayList映射到VO

时间:2012-08-29 06:13:05

标签: java dozer

我正在使用Dozer来转换我的对象。但我有一个问题来映射一个简单的列表... 我从ResultSet检索HibernateObject List,我想将其映射到我的复杂类型对象。

所以,我的来源就像:

List < Object > list = new ArrayList< Object > ();
list.add("Name");
list.add("Address");

我的价值对象是:

public class MyClass 
{ 
    public String name; 
    public String address; 
}

我只想映射list[0] ==&gt; MyClass.namelist[1] ==&gt; MyClass.address属性,但我找不到......

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

出于某种原因,推土机支持此(理想情况):

<mapping>
    <class-a>MyClass</class-a>
    <class-b>java.util.List</class-b>       
    <field>          
        <a is-accessible="true">name</a>
        <b>this[0]</b>
    </field>        
</mapping>

它只会映射name List的整个字符串表示形式,因此您的name属性最终会得到值 [Name,Address]

您最好的选择是将List放在持有者类中,并将其映射为:

<mapping>
    <class-a>MyClass</class-a>
    <class-b>MyHolder</class-b>     
    <field>          
        <a is-accessible="true">name</a>
        <b>holded[0]</b>
    </field>
    <field>          
        <a is-accessible="true">address</a>
        <b>holded[1]</b>
    </field>    
</mapping>

MyHolder类只包含List字段中的holded个实例,并使用getter方法提供对它的访问权。

在字段映射中is-accessible="true"是必需的,因为MyClass属性为public且没有访问者。我建议您创建这些属性private并创建存取方法。