当前位置: 首页 > 知识库问答 >
问题:

Java模型映射器:将集合映射到对象

昝光临
2023-03-14

在对这个话题进行了大量的测试和研究之后,我无法完全解决我的问题。我正在springboot应用程序中使用modelmapper进行实体/DTO映射。我正在尝试配置modelmapper,将一个集合映射到一个简单的DTO对象。我已经创建了一个自定义转换器,它正在按预期工作:

Converter<Set<CategoryTl>, CategoryTlDTO> converter = new AbstractCustomConverter<Set<CategoryTl>, CategoryTlDTO>() {
        @Override
        protected D convert(S source, MappingContext<Set<CategoryTl>, CategoryTlDTO> context) {
            HashMap<String, CategoryTlDetailsDTO> map = new HashMap<>();

             source.forEach(
                    categoryTl -> map.put(categoryTl.getCatalogLanguage().getLanguage().getCode(),
                            new CategoryTlDetailsDTO(categoryTl.getName(), categoryTl.getDescription()))
            );

           return new CategoryTlDTO(map);
        }
    };

我现在的问题是将此转换器应用于所有“集合”=

mapper.createTypeMap(Set<CategoryTl>.class (-> not possible), CategoryTlDTO.class).setConverter(converter);

如果我直接在模型映射器中添加转换器,它就是不工作。

mapper.addConverter(converter);

你对此有什么提示或解决办法吗?也许我错过了一些关于TypeToken和TypeMap继承的东西。

顺致敬意,

共有1个答案

庞意智
2023-03-14

我没有使用ModelMapper,但是文档建议你可以使用TypeToken

Type setType = new TypeToken<Set<CategoryTl>>() {}.getType();
mapper.createTypeMap(setType, CategoryTlDTO.class).setConverter(converter);
 类似资料:
  • 我试图使用http://modelmapper.org/表示DAO和模型类的库- 模型类- 道类- 公共类主题{私有字符串名称; 映射逻辑 ModelMapper似乎不起作用,它给我提供了主题类项目,而不是主题模型类项目

  • 我正在开发和spring应用程序,对于对象映射,我使用ModelMapper库。 我能够映射基本类映射,但当我尝试映射2个集合元素时,源是一组枚举,具有其他属性,如名称和描述,目标是具有id、名称和描述的pojo。 我已经尝试了类型地图和转换器在映射配置文件,但我得到例外的映射器。 源类来自其他应用程序(其依赖项已在pom.xml中添加)。我也不希望源类型作为目标setter中的参数。 前。 资料

  • 当我尝试通过枚举将源中的字符串映射到目标中的整数时。ModelMapper失败。 来源 目的地 字符串和整数之间的映射在枚举中定义

  • 问题内容: 我在这里有一个复杂的json 我正在尝试在我的模型类“ ChromeJsonModel”中映射它,例如: 但是我收到以下错误。 我为什么会在哪里出问题? 问题答案: 您拥有非常复杂的有效负载,其中相同的属性可能具有一个或多个对象。默认情况下不会处理这种情况,因此我们需要为此类属性实现自定义反序列化器。下面我创建了代表您的有效负载的简单模型: 如您所见,它是-es属性。让我们为这些属性实

  • 主要内容:集合类型,以下是纠正/补充内容:集合(Collection)是一个将多个对象分组为一个单元的java框架。它用于存储,检索和操作汇总数据。 在JPA中,可以使用集合来持久化包装类和String的对象。JPA允许三种对象存储在映射集合中 - 基本类型,实体和嵌入式类型。 集合类型 根据要求,我们可以使用不同类型的集合来持久化对象。如下所示 - List Set Map 包中包含集合框架的所有类和接口。 以下是纠正/补充内容: 根据

  • 我是Mapstruct的新手。我有一个Word对象,它包含一个字符串值和一组它自己,我想把它映射到WordDTO,它包含一个值和一组字符串值。我不知道怎么做。正如我在注释中所说,mapstruct不能映射两个对象是有道理的,但如果它有帮助,我将错误放在下面: 我为映射实现了这个接口: 谢谢你的帮助。