私のデータモデルは、基本的に親子の子ツリーを持つ私のデータモデルでは、Dozerは(インターフェースタイプをパラメーターとして使用する)フィールドを解釈するので、クラスであり、コンストラクタでインスタンス化しようとしています。この結果、次の例外が発生します。ドーザーがクラスをそのインターフェースにマップしようとしています
ERROR [MappingProcessor] - Field mapping error -->
MapId: null
Type: null
Source parent class: com.*.shared.model.Module
Source field name: parent
Source field type: class com.*.shared.model.Datawarehouse
Source field value: com.*[email protected]
Dest parent class: com.*.shared.model.Module
Dest field name: parent
Dest field type: com.*.shared.model.Model
org.dozer.MappingException: java.lang.NoSuchMethodException: com.*.shared.model.Model.<init>()
これは、同じクラスのマッピングであり、その親のためのモジュールクラスのセット方法は、そのようにモデルインタフェースを使用するためドーザが正しく、型データウェアハウスであるように、ソースクラスに親フィールドを識別するけれどもパラメータでは、モデルの型をインスタンス化しようとしているようですが、ソースクラスのフィールドが示すように、モデルはDatawarehouseではなくコンストラクタを持たないインタフェースです。
標準的なマッピング動作を変更するためにBeanファクトリを使用することについては知っていますが、これがこの問題を解決する唯一の方法であると私は驚いています。 Dozerは、ソースクラスの型を識別するために必要な情報を既に持っていると思われます。マップしようとしている型ではなく、setterの署名で指定されたインタフェースをインスタンス化しようとします。
提案がありますか?
このクラスに関連するドーザー設定はありますか? – OmegaZiv