我有一些类结构如下。这些类是 hibernate 类,因此我无法更改它们。
//assume all getters & setters are present
public class Order{
private Customer customer;
}
public class Customer{
// non generics set
private Set nameParts;
}
public class NamePart{
private String id;
private String name;
}
// target class
public class OrderShippingDetail{
private String firstName;
}
映射文件
<mapping>
<class-a>Order</class-a>
<class-b>OrderShippingDetail</class-b>
<field>
<a>customer.nameParts[0].name</a>
<b>firstName</b>
</field>
</mapping>
但是 customer.nameParts[0].name dozer dozer dozer 知道集合中的对象。有什么解决办法吗?
如果这只能通过自定义转换器完成,请提供示例代码模板提示。
最佳答案
再深入一层。像这样
<mapping>
<class-a>Order</class-a>
<class-b>OrderShippingDetail</class-b>
<field>
<a>customer.nameParts[0]</a>
<b>this</b>
</field>
</mapping>
<mapping>
<class-a>{class of object @ nameparts[0]}</class>
<class-b>OrderShippingDetail</class-b>
<field><a>name</a><b>firstname</b></field>
</mapping>
这是一种变通方法。我已经使用这个技巧使其在某些地方起作用。
关于java - 推土机将非通用集合映射到属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7239828/