带有Java映射的Spring映射器
我已经为以下问题苦苦挣扎了几个小时,但我不知道如何使其工作: Spring映射器,用于将DB响应转换为DTO:带有Java映射的Spring映射器,java,spring,lombok,mapper,Java,Spring,Lombok,Mapper,我已经为以下问题苦苦挣扎了几个小时,但我不知道如何使其工作: Spring映射器,用于将DB响应转换为DTO: @Mapper(componentModel = "spring") public interface ITeamResponseToDtoMapper { TeamResponseDTO toDto(TeamResponse teamResponse); } 团队响应类: @Data @NoArgsConstructor public class TeamRespons
@Mapper(componentModel = "spring")
public interface ITeamResponseToDtoMapper {
TeamResponseDTO toDto(TeamResponse teamResponse);
}
团队响应类:
@Data
@NoArgsConstructor
public class TeamResponse {
private Map<String, List<NameAndType>> teamList;
}
团队响应到课堂:
@Data
@NoArgsConstructor
public class TeamResponseDTO {
private Map<String, List<NameAndTypeDTO >> teamList;
}
@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:
错误:无法将属性“java.util.map teamList”映射到“java.util.map teamList”。考虑声明/实现映射方法:
我认为需要显式添加方法来映射整个类链。在您的示例中,以下内容应该有效:
@Mapper(componentModel = "spring")
public interface ITeamResponseToDtoMapper {
TeamResponseDTO toDto(TeamResponse teamResponse);
List<NameAndTypeDTO> natListToDTO(List<NameAndType> natList);
NameAndTypeDTO nameAndTypeToDTO(NameAndType nameAndType);
}
@映射器(componentModel=“spring”)
公共接口ITeamResponseToDtoMapper{
teamresponsedTodto(TeamResponse TeamResponse);
List-natlistto(List-natList);
名称和类型到名称和类型到(名称和类型名称和类型);
}
问候,,
WiPu如果您查看它,com.microservices.teamservice.api.dataobjects.nameandto和com.microservices.teamservice.dataobjects.NameAndType都使用不同的包。这意味着你将获得不同的类,并试图映射到另一个类。这是哪个
@Mapper
?您标记的[mapper]
是不相关的。我猜它是MapStruct
mapper。有趣的是,这实际上解决了这个问题。谢谢你。
@Mapper(componentModel = "spring")
public interface ITeamResponseToDtoMapper {
TeamResponseDTO toDto(TeamResponse teamResponse);
List<NameAndTypeDTO> natListToDTO(List<NameAndType> natList);
NameAndTypeDTO nameAndTypeToDTO(NameAndType nameAndType);
}