Java mapstruct无法将模型的属性列表映射到字符串列表

Java mapstruct无法将模型的属性列表映射到字符串列表,java,spring,spring-boot,spring-mvc,jdbc,Java,Spring,Spring Boot,Spring Mvc,Jdbc,如何将差异模型列表字符串映射到下面列出的模型代码 我的任务列表 @Getter @Setter private List<TaskGroupList> groupIds; 我的TaskListMapper.class public abstract List<TaskResponse> toAllTaskListResponse(List<TaskList> taskList); public-abstract-List-to-alltasklistre

如何将差异模型列表字符串映射到下面列出的模型代码

我的任务列表

@Getter
@Setter
private List<TaskGroupList> groupIds;
我的TaskListMapper.class

 public abstract List<TaskResponse> toAllTaskListResponse(List<TaskList> taskList);
public-abstract-List-to-alltasklistresponse(List-taskList);

要映射到列表,我认为需要使用IterableMapping注释。请参阅下面的链接-

它有一个列表到列表转换的示例

@Mapper
public interface CarMapper {
  @IterableMapping(numberFormat = "$#.00")
  List<String> prices(List<Integer> prices);
}
@Mapper
公共接口卡马佩尔{
@IterableMapping(numberFormat=“$#.00”)
标价(标价);
}
因此,在您的场景中,可以使用注释。此外,由于存在列表对象列表,因此需要嵌套迭代,如下所示-

@IterableMapping(qualifiedBy = IterableMapping.class)
List<TaskResponse> toAllTaskListResponse(List<TaskList> taskList);

@IterableMapping(qualifiedByName = "taskGroup")
List<String> map(List<TaskGroupList> task);

@Named("taskGroup")
default String map(TaskGroupList t) {
    return t.getOwnerId();
}
@IterableMapping(qualifiedBy=IterableMapping.class)
列表至所有任务列表响应(列表任务列表);
@IterableMapping(qualifiedByName=“任务组”)
列表映射(列表任务);
@命名(“工作组”)
默认字符串映射(TaskGroupList t){
返回t.getOwnerId();
}

要映射到列表,我认为需要使用IterableMapping注释。请参阅下面的链接-

它有一个列表到列表转换的示例

@Mapper
public interface CarMapper {
  @IterableMapping(numberFormat = "$#.00")
  List<String> prices(List<Integer> prices);
}
@Mapper
公共接口卡马佩尔{
@IterableMapping(numberFormat=“$#.00”)
标价(标价);
}
因此,在您的场景中,可以使用注释。此外,由于存在列表对象列表,因此需要嵌套迭代,如下所示-

@IterableMapping(qualifiedBy = IterableMapping.class)
List<TaskResponse> toAllTaskListResponse(List<TaskList> taskList);

@IterableMapping(qualifiedByName = "taskGroup")
List<String> map(List<TaskGroupList> task);

@Named("taskGroup")
default String map(TaskGroupList t) {
    return t.getOwnerId();
}
@IterableMapping(qualifiedBy=IterableMapping.class)
列表至所有任务列表响应(列表任务列表);
@IterableMapping(qualifiedByName=“任务组”)
列表映射(列表任务);
@命名(“工作组”)
默认字符串映射(TaskGroupList t){
返回t.getOwnerId();
}
@Mapper(componentModel=“spring”)
公共接口CarListMapper{
@映射(source=“groupIds”、target=“groupIds”、qualifiedByName=“toGroupId”)
任务响应到任务响应(任务列表任务列表);
所有任务列表中的列表(列表卡片列表);
@命名(“toGroupId”)
静态列表到组ID(列表组ID){
返回groupIds.stream()
.map(taskGroupList->taskGroupList.getOwnerId()).collect(collector.toList());
}
}
它为我工作了

@Mapper(componentModel=“spring”)
公共接口CarListMapper{
@映射(source=“groupIds”、target=“groupIds”、qualifiedByName=“toGroupId”)
任务响应到任务响应(任务列表任务列表);
所有任务列表中的列表(列表卡片列表);
@命名(“toGroupId”)
静态列表到组ID(列表组ID){
返回groupIds.stream()
.map(taskGroupList->taskGroupList.getOwnerId()).collect(collector.toList());
}
}

它对我有用

谢谢你的回答,当我使用那个注释时,我有一个错误,上面写着;'@IterableMapping define中未定义nullValueMappingStrategy、'dategormat、'qualifiedBy'和'elementtargetType',至少其中一个'I已通过post更新。正如错误中提到的,需要一种策略。非常感谢,我认为它将在我有@AfterMapping注释的基础上工作,并给我一个错误。什么是最好的方法?你能发布你的相关代码吗?你得到的错误是什么?如果这回答了你的问题,请将其标记为答案。谢谢你的回答,当我使用注释时,我有一个错误,上面说;'@IterableMapping define中未定义nullValueMappingStrategy、'dategormat、'qualifiedBy'和'elementtargetType',至少其中一个'I已通过post更新。正如错误中提到的,需要一种策略。非常感谢,我认为它将在我有@AfterMapping注释的基础上工作,并给我一个错误。什么是最好的方法?你能发布你的相关代码吗?你得到的错误是什么?如果这回答了你的问题,请将其标记为答案。发布新答案发布新答案非常感谢你的回答。我很快就会采用这种方法:)非常感谢你的回答。我将很快使用这种方法:)
@Mapper(componentModel = "spring")
public interface CarListMapper {

    @Mapping(source = "groupIds",target = "groupIds",qualifiedByName = "toGroupId")
    TaskResponse toTaskResponse(TaskList taskList);

    List<TaskResponse> fromAllTaskList(List<TaskList> carDtoList);

    @Named("toGroupId")
    static List<String> toGroupId(List<TaskGroupList> groupIds){
        return groupIds.stream()
                .map(taskGroupList -> taskGroupList.getOwnerId()).collect(Collectors.toList());
    }
}