java - 带有 Java Map 的 Spring 映射器
问题描述
我已经为以下问题苦苦挣扎了几个小时,但我不知道如何使它工作:
Spring 映射器,为了将 DB 响应转换为 DTO:
@Mapper(componentModel = "spring")
public interface ITeamResponseToDtoMapper {
TeamResponseDTO toDto(TeamResponse teamResponse);
}
团队响应类:
@Data
@NoArgsConstructor
public class TeamResponse {
private Map<String, List<NameAndType>> teamList;
}
NameAndType 类:
@Data
@NoArgsConstructor
@AllArgsConstructor(access = AccessLevel.PUBLIC)
public class NameAndType{
private String name;
private String type;
private String team;
}
TeamResponseDTO 类:
@Data
@NoArgsConstructor
public class TeamResponseDTO {
private Map<String, List<NameAndTypeDTO >> teamList;
}
NameAndTypeDTO 类:
@Data
@NoArgsConstructor
@AllArgsConstructor(access = AccessLevel.PUBLIC)
public class NameAndTypeDTO {
private String name;
private String type;
private String team;
}
基本上,'NameAndType' 和 'NameAndTypeDTO' 是相同的,为什么它无法进行转换?
error: Can't map property "java.util.Map<java.lang.String,java.util.List<com.microservices.teamservice.dataobjects.NameAndType>> teamList" to "java.util.Map<java.lang.String,java.util.List<com.microservices.teamservice.api.dataobjects.NameAndTypeDTO>> teamList". Consider to declare/implement a mapping method:
解决方案
我认为您需要显式添加方法来映射整个类链。在您的示例中,以下内容应该有效:
@Mapper(componentModel = "spring")
public interface ITeamResponseToDtoMapper {
TeamResponseDTO toDto(TeamResponse teamResponse);
List<NameAndTypeDTO> natListToDTO(List<NameAndType> natList);
NameAndTypeDTO nameAndTypeToDTO(NameAndType nameAndType);
}
问候, 维普
推荐阅读
- python - 将本地文件上传到 Google Drive 后如何删除?
- javascript - Wordpress 自定义小部件 - Javascript 输出未显示
- jenkins - 如何从 Jenkinsfile 中“立即扫描存储库”
- sql - 当节点具有 XML 类型的数字时,.value 如何工作
- ios - 未定义不是对象(评估'RNBranch.STANDARD EVENT ADD_TO_CART')
- java - 应用范围菜单中 onOptionsItemSelected 的上下文
- java - 将字符串操作为 json 格式的 Java 代码
- php - 如何根据 PHP 中的内部数组键对数组进行分组?
- .net - AppDynamics 代理如何在内部检测 .NET 应用程序
- sql - SQL 查询逻辑到 Django ORM 查询逻辑