推土机将非通用集合映射到属性

时间:2011-08-30 07:17:08

标签: java hibernate collections dozer object-object-mapping

我有一些类结构如下。这些类是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; 
} 

mappying file

<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 剂量的这种映射可以作为推土机剂量知道集合中的对象。有什么工作吗。

如果只能通过自定义转换器完成此操作,则可以使用示例代码模板提示。

2 个答案:

答案 0 :(得分:0)

更深入一级。像这样

<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>

这可以作为一种解决方法。我已经用这个技巧让它在某些地方起作用了。

答案 1 :(得分:0)

我正在阅读文档,发现对于深度映射期间的非泛型集合,可以使用指定对象 的

<field> 
    <a>customer.nameParts[0].name</a> 
    <b>firstName</b> 
    <a-deep-index-hint>com.example.Customer, com.example.NamePart</a-deep-index-hint>
</field>