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()
但这也没有被提起。
关于我缺少的任何提示?
答案 0 :(得分:1)
这可以通过注册自定义映射器来完成:
mapperFactory.registerMapper(new NonCumulativeListMapperDocumentToDocumentRepresentation());
稍后当Orika必须映射DOCUMENT_LIST DOCUMENT_REP_LIST时将使用它。不需要最后一个fieldMap配置。
有关在Orika中合并集合的更多信息,请参阅此内容 simple test (CustomMergerTest)