0

Orika はジェネリック型をサポートしていますが、ジェネリック コレクションを操作するには問題があります。Orika はさまざまなコレクション戦略 (累積、非累積、孤立した削除) をサポートしていないため、要件を処理するカスタム マッパーを作成する必要があります。

問題は、Orika がこのマッパーを適用せず、代わりに通常のコレクション マッピング ロジックを使用しようとすることです。

Type<List<Document>> DOCUMENT_LIST = new TypeBuilder<List<Document>>() {}.build();
Type<List<DocumentRepresentation>> DOCUMENT_REP_LIST = new TypeBuilder<List<DocumentRepresentation>>() {}.build();

mapperFactory.classMap(DOCUMENT_LIST, DOCUMENT_REP_LIST)
                .mapNulls(true)
                .mapNullsInReverse(true)
                .customize(new NonCumulativeListMapperDocumentToDocumentRepresentation())
                .register();

public class NonCumulativeListMapperDocumentToDocumentRepresentation
        extends CustomMapper<List<Document>, List<DocumentRepresentation>> {
    //mapping logic
}

また、親マッピングで型リストを明示的に設定しようとしました

.fieldMap("documents", "documents")
.aElementType(Document.class)
.bElementType(DocumentRepresentation.class)
.add()

しかし、これも取り上げられませんでした。

私が見逃しているものについてのヒントはありますか?

4

1 に答える 1

1

これは、カスタム マッパーを登録することで実行できます。

mapperFactory.registerMapper(new NonCumulativeListMapperDocumentToDocumentRepresentation());

Orika が DOCUMENT_LIST DOCUMENT_REP_LIST をマップする必要があるときに、後で使用されます。最後の fieldMap 構成は必要ありません。

Orikaでのコレクションのマージの詳細については、この 単純なテスト (CustomMergerTest)を参照してください。

于 2013-11-13T15:36:40.333 に答える