3

以下のフィールド 2 のマッピング例に示すように、Dozer を使用して 2 つのクラスをマッピングするときに、Java クラスから定数をマッピングしたいと考えています。Factory Beanインスタンスとは別に、Dozerでこれを行うためのよりクリーンなアプローチはありますか..

     <mapping>
    <class-a>com.mod.Class1</class-a>
    <class-b>com.mod.Class2</class-b>
    <field>
        <a>field1inClass1</a>
        <b>field1inClass2</b>
    </field>
    <field>       <!-- This is from constants. -->
        <a>constants.Field</a>
        <b>field2inClass2</b>
    </field>
   </mapping> 
4

1 に答える 1

2

過去にもこれが必要でしたが、成功しませんでした。Dozer は、class-aまたはで定義されたクラスとは異なるクラスの定数値へのマッピングをサポートしていませんclass-bclass-aまたはのクラス内で定数を定義する場合はclass-b、一方向のマッピングを実行is-accessible="true"して定数フィールドで使用するだけで済みます。

醜い回避策として、別のmapping要素を作成して、Constants クラスから宛先オブジェクトへの一方向マッピングを行うことができますが、Dozer に定数クラスのインスタンスを渡す必要があります (私は知っていますが、それは悪いことです)。あなたの定数クラスはインスタンス化可能です(これは最悪です)。

<mapping>
    <class-a>ConstantsClass</class-a>
    <class-b>InstantiableClass</class-b>        
    <field type="one-way">           
        <a is-accessible="true">THE_CONSTANT</a>
        <b>value</b> 
    </field>        
</mapping>

Dozer フォーラムの関連トピック

于 2012-08-09T19:14:34.193 に答える