Dmi*_*ach 8 java mapping mapstruct
我使用以下映射器来映射实体:
public interface AssigmentFileMapper {
AssigmentFileDTO assigmentFileToAssigmentFileDTO(AssigmentFile assigmentFile);
AssigmentFile assigmentFileDTOToAssigmentFile(AssigmentFileDTO assigmentFileDTO);
@Mapping(target = "data", ignore = true)
List<AssigmentFileDTO> assigmentFilesToAssigmentFileDTOs(List<AssigmentFile> assigmentFiles);
List<AssigmentFile> assigmentFileDTOsToAssigmentFiles(List<AssigmentFileDTO> assigmentFileDTOs);
}
Run Code Online (Sandbox Code Playgroud)
我只需要忽略映射为集合的实体的"数据"字段.但它看起来@Mapping只适用于单个实体.另外我注意到生成的方法assigmentFilesToAssigmentFileDTOs只是用于assigmentFileToAssigmentFileDTOfor循环.那有什么解决方案吗?
Fil*_*lip 17
MapStruct使用它可以为集合映射找到的赋值.为了实现您想要的功能,您必须定义一个自定义方法,您将data明确忽略该字段,然后使用@IterableMapping(qualifiedBy)或@IterableMapping(qualifiedByName)选择所需的方法.
您的映射器应如下所示:
public interface AssigmentFileMapper {
AssigmentFileDTO assigmentFileToAssigmentFileDTO(AssigmentFile assigmentFile);
AssigmentFile assigmentFileDTOToAssigmentFile(AssigmentFileDTO assigmentFileDTO);
@IterableMapping(qualifiedByName="mapWithoutData")
List<AssigmentFileDTO> assigmentFilesToAssigmentFileDTOs(List<AssigmentFile> assigmentFiles);
List<AssigmentFile> assigmentFileDTOsToAssigmentFiles(List<AssigmentFileDTO> assigmentFileDTOs);
@Named("mapWithoutData")
@Mapping(target = "data", ignore = true)
AssignmentFileDto mapWithouData(AssignmentFile source)
}
Run Code Online (Sandbox Code Playgroud)
您应该使用org.mapstruct.Named而不是javax.inject.Named为此工作.您还可以使用定义自己的注释org.mapstruct.Qualifier
您可以在文档中找到更多信息.
| 归档时间: |
|
| 查看次数: |
16278 次 |
| 最近记录: |