【问题标题】:Consider to dec lare/implement a mapping method: "java.lang.String map(java.lang.Object value)" during to use the Framework MapStruct考虑在使用框架 MapStruct 期间声明/实现一个映射方法:“java.lang.String map(java.lang.Object value)”
【发布时间】:2020-08-15 02:34:56
【问题描述】:
@Mapper(componentModel = "spring")
public interface MapperThings  {

    @MapMapping(keyTargetType = Object.class, valueTargetType = Object.class)
    Map<String, String> toDto(Map<Object, Object> mapEntity);

    List<Map <String, String>> toListDto(Collection<Map<Object, Object>> listEntity);

    @MapMapping(keyTargetType = Object.class, valueTargetType = Object.class)
    Map<Object, Object> toEntity(Map<String, String> mapDto);

    List<Map<Object, Object> > toListEntity(Collection<Map<String, String>> listDto);


}

只有生成没有错误:

    @MapMapping(keyTargetType = Object.class, valueTargetType = Object.class)
    Map<Object, Object> toEntity(Map<String, String> mapDto);

    List<Map<Object, Object> > toListEntity(Collection<Map<String, String>> listDto);

我找到了临时决定。但我想使用注释@MapMapping。

@Mapper(componentModel = "spring")
public abstract class MapperMoviesAbstract {

    public Map<String, String> toDto(Map<Object, Object> mapEntity) {

        if(mapEntity == null) return null;

        Map<String, String> stringMap = new HashMap<>();

        for(Map.Entry<Object, Object> entry : mapEntity.entrySet()){

            String key = (String) entry.getKey();

            stringMap.put(key, mapEntity.get(key).toString());
        }

        return stringMap;

    }

    public abstract List< Map<String, String>> toListDto(Collection<Map<Object, Object>> listEntity);

}

根据 MapStruct 文档,使用 @MapMapping 注解应该生成一个将执行转换的类。

但我得到一个错误:

无法将映射键“java.lang.Object”映射到“java.lang.String”。考虑 声明/实现映射方法:“java.lang.String 地图(java.lang.Object 值)”。

有人有什么想法吗?

【问题讨论】:

    标签: spring-boot mapstruct


    【解决方案1】:

    错误消息告诉您该怎么做。您需要提供一种将Object 映射到String 的方法。

    所以你需要一个自定义方法,例如:

    public String objectToString(Object object) {
        // Your custom implementation
    }
    

    【讨论】:

    • 请用我的例子来做一个例子。对不起,我理解你。我在上面显示我的决定。怎么改正?
    猜你喜欢
    • 1970-01-01
    • 2018-12-04
    • 1970-01-01
    • 1970-01-01
    • 2019-07-04
    • 2018-12-10
    • 2021-10-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多