0

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]==>MyClass.nameおよびlist[1]==>プロパティをマップしたいだけですMyClass.addressが、方法がわかりません...

ご協力いただきありがとうございます !

4

1 に答える 1

0

何らかの理由で Dozerはこれをサポートしていません(理想的な状況):

<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"が必要です。これらのプロパティを作成し、アクセサ メソッドを作成することをお勧めします。MyClasspublicprivate

于 2012-08-29T16:55:20.240 に答える