java - Orika 通用集合自定义映射

标签 java generics collections mapping orika

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()

但这也没有被采纳。

关于我缺少什么的任何提示吗?

最佳答案

这可以通过注册您的自定义映射器来完成:

mapperFactory.registerMapper(new NonCumulativeListMapperDocumentToDocumentRepresentation());

稍后 Orika 必须映射 DOCUMENT_LIST DOCUMENT_REP_LIST 时将使用它。不需要最后的fieldMap配置。

有关 Orika 中合并集合的更多信息,请参阅此 simple test (CustomMergerTest) .

关于java - Orika 通用集合自定义映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19953629/

相关文章:

java - 无法比较用户定义的对象进行排序 (Java 8)

java - 如何在elasticsearch中添加where子句

java - Mongo $sort 是如何工作的?

java - 我可以在 SWT FileDialog 过滤器中隐藏文件扩展名吗?

java - 在 Main 的非泛型定义类中调用泛型定义的方法

java - 在 Java 中, 'extends' 在这种情况下也意味着 'implements' 吗?

java - Collection.synchronizedMap 与同步 HashMap 中的各个方法

java - 安卓工作室 : NoClassDefFoundError exception on runtime with Java Library Module

java - 对具有泛型参数的 java 接口(interface)方法使用特定的实现类型。如何避免不加控制的 Actor 阵容

java - 如何提高 Java ArrayList 的性能