1

Dozer でジェネリックスを使用してオブジェクトにマップする方法に苦労しており、広範囲にわたる検索の結果、役立つものは何も見つかりませんでした。

私が書いたいくつかのオブジェクトを、他の誰かが作成したオブジェクトにマップしようとしています。私は注釈を使い始めましたが、同様のエラーが発生したため、代わりにマッピング ファイルを使用することにしました。しかし、それは役に立たなかったようです。

これが私が達成しようとしていることの例です。

public interface MyObject<T extends MyContent> {
   T getData();
}

public interface MyStaff extends MyContent {
   Demo getDemo();
}

public interface Demo {
   Name getName();
}

public interface Name {
  String getFirstName();
  String setFirstName(String firstName);
}
<mapping>
    <class-a>com.example.Staff</class-a>
    <class-b>com.example.MyObject</class-b>
    <field>
        <a>firstName</a>
        <b>data.demo.name.firstName</b>
    </field>
</mapping>

私が見ているエラーは次のとおりです。

org.dozer.MappingException: No read or write method found for field (data.demo.name.firstName) in class (interface com.example.MyObject)

別の順列を試しましたが (たとえば、インターフェイスではなく具象クラスを使用)、何も機能しません。

4

1 に答える 1

0

これを機能させることができました。問題は、実装クラスが公開されていなかったことが原因のようです。これはバグか、少なくとも機能強化のようです。Dozer は、フィールドが見つからないことを示唆するのは誤解を招くため、クラスにアクセスできないことを通知する必要があります。

于 2013-08-28T18:23:13.260 に答える