2

次のようなクラス構造があります。これらのクラスは休止状態のクラスなので、変更できません。

//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のマッピングは、ドーザーがセット内のオブジェクトを認識していないため機能しません。回避策はありますか。

これがカスタム コンバーターによってのみ実行できる場合は、サンプル コード テンプレートのヒントを歓迎します。

4

2 に答える 2

0

1 レベル深く進みます。このような

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

これは回避策として機能します。このトリックを使用して、いくつかの場所で機能させました。

于 2011-08-30T20:52:30.177 に答える
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>
于 2011-09-01T08:38:33.643 に答える