我正在使用Dozer来转换我的对象。但我有一个问题来映射一个简单的列表...
我从ResultSet
检索Hibernate
为Object 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.name
和list[1]
==&gt; MyClass.address
属性,但我找不到......
感谢您的帮助!
答案 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
并创建存取方法。