【发布时间】: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